Skip to content

Latest commit

 

History

History

flyweight

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Структурные шаблоны / Приспособленец

Приспособленец (Flyweight)

Другие названия

  • Кэш
  • Легковесный элемент

Описание паттерна

Инкапсулирует одинаковое внутреннее состояние группы разных объектов.

Экономит оперативную память, вычленяя общее состояние различных объектов и разделяя его между ними. Объекты при этом могут быть совершенно разными.

Шаблон часто используется при работе с большим количеством мелких объектов (частиц).

Реализация паттерна

Схема паттерна Приспособленец

В классе Конкретного Приспособленца ConcreteFlyweight хранятся только неизменяемые данные и методы (внутреннее состояние), в которые передаются изменяющиеся данные (внешнее состояние), вынесенные за пределы Приспособленца в класс UnsharedConcreteFlyweight.

Это позволяет повторно использовать одни и те же объекты, не создавая новые, так как их внутреннее состояние не изменяется. Важно обеспечить неизменяемость внутреннего состояния Приспособленца (отсутствие сеттеров и публичных полей).

Примеры

Взаимодействие с другими паттернами

  • Фабричный метод

    Когда необходимо получить новый объект, Фабричный метод ищет подходящий среди уже созданных (с подходящим внутренним состоянием) и использует его.