Шаблон Flyweight (Приспособленец)
07-11-2019Время чтения ~ 1 мин.PHP/ООП 5748
Приспособленец — структурный шаблон проектирования, который позволяет получать доступ к объектам предотвращая их повторное инстанцирование. Flyweight имеет смысл при работе с множеством мелких однотипных классов, к которым удобно обращаться через единую точку входа.
Исходный код я разместил на гитхабе.
Итак. Пусть у нас есть несколько однотипных классов (ClassA, ClassB, ClassC), которые выполняют какую-то свою работу. При желании можно реализовать их от общего интерфейса.
Когда классов много, то каждый из них не совсем удобно инстанцировать отдельно. Вместо этого создается класс FlyweightFactory
: он сам создает объект, но делает это только один раз. При повторном вызове возвращается уже готовый объект. Такой алгоритм позволяет оптимизировать расход памяти программы.