Singleton
Spis treści
Charakterystyka
Wzorzec projektowy (ang. design pattern), zaliczany do kategorii wzorców konstrukcyjnych, pozwalający na kontrolowanie ilości instancji danej klasy używanych w systemie, a także sposób ich uzyskiwania. W najczęstszym przypadku singleton zwraca zawsze jedną instancję klasy.
Założenia
Singleton pozwala na:
- kontrolowanie ilości występujących klas w systemie (najczęściej do jednej kopii)
- kontrolowanie sposobu uzyskiwania instancji obiektu (przez statyczną metodą)
- globalne uzyskiwanie instancji obiektu (z każdego miejsca skryptu)
Kiedy używać?
Wzorca singleton możemy używać wtedy, gdy potrzebujemny tylko jednej instancji danej klasy ( np w klasie do obsługi bazy danych, gdzie przy każdym stworzeniu obiektu, tworzone jest nowe połączenie), i/lub gdy potrzebujemy globalnego dostępu do instancji klasy.
przykładowe implementacje
Implementacja dla PHP 5
<?php final class Singleton { /** * Przechowuje instancję klasy Singleton * * @var object * @access private */ private static $oInstance = false; /** * Zwraca instancję obiektu Singleton * * @return Singleton * @access public * @static */ public static function getInstance() { if( self::$oInstance == false ) { self::$oInstance = new Singleton(); } return self::$oInstance; } private function __construct() {} } ?>
Implementacja dla PHP 4
<?php class Singleton { /** * Zwraca instancję obiektu Singleton * * @return Singleton * @access public * @static */ function &getInstance() { static $oInstance = false; if( $oInstance == false ) { $oInstance = new Singleton(); } return $oInstance; } } ?>
Aby otrzymać instancję, należy wywołać statyczną metodą getInstance():
<?php $oSingleton = Singleton::getInstance(); ?>
Implementacja dla PHP 4 nie speśnia wszystkich zaśożeś tego wzorca. W dalszym ciągu możemy utworzyć instancję obiektu za pomocą kodu:
<?php $obj = new Singleton() ?>
W PHP 5 nie pozwala na to prywatny konstruktor. W PHP 4 to, czy wzorzec będzie działań poprawnie, zależy tylko od konsekwencji programisty.
Polecamy również
Strona ta opisuje jeden z Wzorców projektowych.
Wzorce projektowe: Definicja | Zalety | Podział wzorców | Lista wzorców