Инструменты пользователя

Инструменты сайта


php:shablony_proektirovanija:generative_patterns:multiton

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

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

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

<?php
 
 class DB
 {
      protected static $instance = array();
 
     private function __construct($key)
     {
              //connect to $key DB
     }
 
     public static function getInstance($key)
     {
              if (is_null(self::$instance[$key])) {
                     self::$instance[$key] = new self($key);
         }
         return self::$instance[$key];
     }
 
     public function query($sql)
     {
             /* ... */
     }
 
     private function __clone(){}
 
     private function __wakeup(){}
 }
 
 $sql = 'some sql';
 $mysql = DB::getInstance('mysql');
 $mysql->query($sql);
 $sqlite = DB::getInstance('sqlite');
 $sqlite->query($sql);
php/shablony_proektirovanija/generative_patterns/multiton.txt · Последние изменения: 2023/08/07 23:21 — werwolf