Пул одиночек (англ. Multiton) - похож на шаблон Одиночка.
Позволяет создавать и содержать несколько одиночек, доступ к которым можно получить по уникальному “ключу”.
Продолжаем тему нашей закусочной. Бизнес идёт в гору, и мы устанавливаем ещё пару кассовых аппаратов.
Для удобного доступа ко всем аппаратам мы создадим систему ShopCashSystem, которую и реализует наш Multiton.
Как и с Singleton‘ом, мы закрыли все магические методы. Для доступа к объекту используется
статический метод ShopCashSystem::getInstance().
Применение:
Два объекта для доступа к базам данных, к примеру, один для MySQL, а второй для SQLite
Несколько логирующих объектов (один для отладочных сообщений, другой для ошибок и т.п.)
Примечание:
Иногда этот шаблон называют Реестр одиночек.
Напомню про антипаттерн Одиночество (Singletonitis).