Definice:
Návrhový vzor Singleton je pojmenování pro takovou třídu, ze které má existovat nanejvíš jedna jediná instance objektu třídy. K této instanci nám pak Singleton poskytne globální přístupový bod.
Implementace
Pro implementaci tohoto návrhového vzoru je vždy nutné zajistit následující čtyři kroky:
-
Definovat statický atribut, který obsahuje instanci objektu třídy.
-
Implementovat statickou metodu, která vrací objekt z bodu 1 a v případě, že neexistuje, jej vytvoří.
-
Zabránit vytvoření nové instance pomocí operátoru
new
. V mnoha jazycích stačí konstruktor deklarovat jakoprotected
neboprivate
. -
Zajistit, aby objekt třídy nemohl být klonovaný, k čemuž stačí metodu __clone() deklarovat jako private.
Použití
Často se používá při poskytování centrálního přístupového bodu ke konfiguraci aplikace. Nebo se využívá pro přístup k externím zdrojům, jako například databáze.
Příklad v C#
sealed class Singleton {
private Singleton() { }
private static Singleton _Singleton = null;
public static Singleton Instance
{
get
{
if (_Singleton == null) _Singleton = new Singleton();
return _Singleton;
}
}
.... následují další nestatické metody...
}