Структурные шаблоны / Приспособленец
Кэш
Легковесный элемент
Инкапсулирует одинаковое внутреннее состояние группы разных объектов.
Экономит оперативную память, вычленяя общее состояние различных объектов и разделяя его между ними. Объекты при этом могут быть совершенно разными.
Шаблон часто используется при работе с большим количеством мелких объектов (частиц).
В классе Конкретного Приспособленца ConcreteFlyweight
хранятся только неизменяемые данные и методы (внутреннее состояние), в которые передаются изменяющиеся данные (внешнее состояние), вынесенные за пределы Приспособленца
в класс UnsharedConcreteFlyweight
.
Это позволяет повторно использовать одни и те же объекты, не создавая новые, так как их внутреннее состояние не изменяется. Важно обеспечить неизменяемость внутреннего состояния Приспособленца
(отсутствие сеттеров и публичных полей).
-
Когда необходимо получить новый объект,
Фабричный метод
ищет подходящий среди уже созданных (с подходящим внутренним состоянием) и использует его.