🕵️
Введение в паттерны
  • Введение в паттерны
  • Паттерны
    • Оглавление
    • Порождающие паттерны
      • Фабричный метод
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Абстрактная фабрика
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Прототип
        • Реализации на С++
        • Реализации на Kotlin
        • Реализации на Java
        • Возможные реализации для решения конкретных задач на С++
      • Строитель
        • Реализации на С++
        • Реализации на Kotlin
      • Одиночка
        • Реализации на C++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Пул объектов
        • Реализации на С++
    • Структурные паттерны
      • Адаптер
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач
      • Декоратор
        • Реализации на С++
        • Реализации на Kotlin
      • Компоновщик
        • Реализации на С++
      • Мост
        • Реализации на С++
      • Заместитель
        • Реализации на С++
        • Реализации на Kotlin
      • Фасад
        • Реализации на С++
      • Приспособленец
        • Реализации на С++
    • Поведенческие паттерны
      • Стратегия
        • Реализации на С++
        • Реализации на Kotlin
      • Команда
        • Реализации на С++
        • Реализации на Kotlin
      • Цепочка обязанностей
        • Реализации на С++
        • Реализации на Kotlin
      • Подписчик-издатель
        • Реализации на С++
        • Реализации на Kotlin
      • Посетитель
        • Реализации на С++
        • Возможные реализации для решения конкретных задач
      • Посредник
        • Реализации на С++
        • Реализации на Kotlin
      • Шаблонный метод
        • Реализации на С++
      • Опекун
        • Реализации на С++
      • Итератор
        • Реализации на С++
        • Реализации на Kotlin
      • Свойство
        • Реализации на С++
        • Возможные реализации для решения конкретных задач
  • Введение в идиомы
  • Идиомы
    • Оглавление
    • RAII
    • Type erasure
      • Контейнеры с type erasure
    • CRTP
    • Статический полиморфизм
    • Shrink to fit
    • Proxy
    • Erase remove
    • Decltype (auto)
    • Copy and swap
    • Safe bool
    • Scope guard
    • Addressof
Powered by GitBook
On this page
  • Назначение
  • Решаемые задачи
  • UML диаграмма
  • Преимущества
  • Недостатки
  • Связь с другими паттернами

Was this helpful?

  1. Паттерны
  2. Структурные паттерны

Приспособленец

Flyweight

PreviousРеализации на С++NextРеализации на С++

Last updated 1 year ago

Was this helpful?

Назначение

Паттерн Приспособленец (Flyweight) — это структурный паттерн проектирования, который применяется для эффективной поддержки большого числа мелких объектов засчет разделения объектов на две части: внутреннее состояние (уникальная информация, специфичная для каждого объекта) и внешнее состояние (общая информация, которая может быть разделяемой между объектами)

Решаемые задачи

  • потребность в создании огромного количество объектов, каждый из которых содержит часть информации, которая является общей для множества других объектов

  • экономия времени на создание и уничтожение объектов

Данный паттерн проектирования будет эффективен при выполнении всех последующих условий:

  • в приложении используется большое число объектов

  • накладные расходы на хранение высоки

  • большую часть состояния объектов можно вынести вовне

  • многие группы объектов можно заменить относительно небольшим количеством разделяемых объектов, поскольку внешнее состояние вынесено

  • приложение не зависит от идентичности объекта

UML диаграмма

Преимущества

  • создание более гибкого и поддерживаемого кода

  • увеличение скорости выполнения ресурсоемких операций: за счет снижения нагрузки на создание и удаление объектов

  • экономия оперативной памяти

Недостатки

  • расход процессорного времени на поиск/вычисление контекста

  • усложнение кода программы из-за введения множества дополнительных классов

Связь с другими паттернами

: паттерн приспособленец часто используется в сочетании с компоновщиком для реализации иерархической структуры в виде ациклического направленного графа с разделяемыми листовыми вершинами.

: часто наилучшим способом реализации объектов стратегии является паттерн приспособленец.

Компоновщик
Стратегия
UML диаграмма паттерна "Приспособленец"