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

Flyweight

Назначение

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

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

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

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

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

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

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

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

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

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

UML диаграмма

UML диаграмма паттерна "Приспособленец"

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

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

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

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

Недостатки

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

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

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

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

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

Last updated

Was this helpful?