Wzorzec projektowy Singleton
Singleton jest prostym oraz bardzo popularnym wzorcem projektowym. Jego celem jest ograniczenie możliwości tworzenia obiektów danej klasy do jednej instancji oraz zapewnienie globalnego dostępu do stworzonego obiektu. Singleton implementuje się poprzez stworzenie klasy, która posiada statyczną metodę getInstance(). Metoda ta sprawdza, czy istnieje już instancja tej klasy, jeżeli nie – tworzy ją i przechowuje jej referencję w prywatnym polu. Aby uniemożliwić tworzenie dodatkowych instancji, konstruktor klasy deklaruje się jako prywatny lub chroniony.
![]()
Rys. Diagram klas wzorca projektowego Singleton
class Opcje_Konfiguracyjne {
private static $instance;
private $language = "pl";
private function __construct() {
}
public static function getInstance() {
if(self::$instance === null) {
self::$instance = new Opcje_Konfiguracyjne();
}
return self::$instance;
}
public function getLanguage() {
return $this->language;
}
}
$conf = Opcje_Konfiguracyjne::getInstance();
echo $conf->getLanguage();
Jak widać dostęp do instancji Singletona uzyskuje się poprzez wywołanie statycznej metody getInstance, a dane pobieramy poprzez wywołanie odpowiednich metod.
Nowe trendy programowania odchodzą od stosowania dużej ilości globalnych zmiennych oraz obiektów. Dlatego też we współczesnym programowaniu coraz częściej unika się stosowania tego wzorca.