Шаблон Multiton (Пул одиночек)
08-07-2019Reading time ~ 1 min.PHP/ООП 7585
Multiton (Пул одиночек) — представляет собой развитие шаблона Singleton, где вместо единственного экземпляра можно создать и использовать множество. С практической точки зрения мультитон может использоваться для создания однотипных классов, которые не должны между собой пересекаться. Самый простой пример — работа с несколькими конфигурациями, где каждый класс мультитона хранит какой-то свой набор данных.
Код Multiton вы найдете на гитхабе.
В отличие от Одиночки, вызов/создание мультитона происходит с параметром, который идентифицирует объект.
$foo1 = Foo::getInstance('Alpha'); $foo2 = Foo::getInstance('Beta');
В данном примере — это будут два несвязанных между собой объекта. В этом плане Multiton похож на Factory Method (Фабричный метод), только без использования наследования.
С моей точки зрения, Multiton можно использовать очень обдумано, в реальных условиях лучше обходиться более «классическими» методами. На основе мультитона можно создать другой шаблон проектирования Registry, который используется для создания глобальной области видимости. Но об этом в другой раз. :)