Паттерн проектирования Multiton (Пул одиночек) на PHP

Пул одиночек (англ. Multiton) похож на паттерн проектирования Одиночка (англ. Singleton), но в отличае отнего позволяет создавать коллекции экземпляров класса и позволяет получать доступ по ключу.

Иногда этот паттерн называют Реестр одиночек.


Паттерн проектирования Multiton (Пул одиночек) на PHP

 1: <?php
 2:
 3:
class DB
 4:
{
 5:     protected static 
$instance = array();
 6:
 7:     private function 
__construct($key)
 8:     {
 9:         
//connect to $key DB
10:     
}
11:
12:     public static function 
getInstance($key)
13:     {
14:         if (
is_null(self::$instance[$key])) {
15:             
self::$instance[$key] = new self($key);
16:         }
17:         return 
self::$instance[$key];
18:     }
19:
20:     public function 
query($sql)
21:     {
22:         
/* ... */
23:     
}
24:
25:     private function 
__clone()
26:     {
27:     }
28:
29:     private function 
__wakeup()
30:     {
31:     }
32: }
33:
34:
$sql 'some sql';
35:
$mysql DB::getInstance('mysql');
36:
$mysql->query($sql);
37:
$sqlite DB::getInstance('sqlite');
38:
$sqlite->query($sql);

Теги: Пул одиночек, Multiton, Реестр одиночек, Порождающие шаблоны


Похожие статьи

Паттерн проектирования Resource Acquisition Is Initialization - RAII (Получение ресурса есть инициализация) на PHP

Паттерн проектирования Prototype (Прототип) на PHP

Паттерн проектирования Abstract Factory (Абстрактная фабрика) на PHP

Паттерн проектирования Lazy initialization (Отложенная инициализация) на PHP

Паттерн проектирования Object pool (Объектный пул) на PHP

Паттерн проектирования Factory Method (Фабричный метод) на PHP

Паттерн проектирования Singleton (Одиночка) на PHP

Паттерн проектирования Builder (Строитель) на PHP