Singleton

Aus php bar
Wechseln zu: Navigation, Suche

Das Singleton ist ein Entwurfsmuster aus der Softwareentwicklung. Das Singleton gewährleistet, dass von einer Klasse nur ein Objekt erzeugt werden kann.

Implementierung

Für das klassische Singleton wird eine statische Methode implementiert, welche das Objekt erzeugt und zurückgibt. Die Instantiierung kann durch das Schlüsselwort private vor dem Konstruktor verhindert werden.

1 span class="st0">''// Singleton instanziieren
2 'my'// Ausgabe: 'my'
3 


Eine weitere weit verbreitete Variante in PHP ist ein generisches Singleton. Diese erzeugt und verwaltet alle angeforderten Objekte. Die Klassen brauchen keine zusätzlichen Methoden, können aber nicht durch das Schlüsselwort private vor dem mehrfachen Instantiieren geschützt werden.

1 span class="st0">'Girl.php''Girl''Boy.php''Boy'


Diese Variante hat Ähnlichkeit mit dem Registry Muster - sie hat aber deutliche Nachteile.

Anwendung

Sehr nützlich ist das Singleton, wenn es von einer Klasse aus technischen Gründen nur ein Objekt geben darf. Außerdem werden durch das Verhindern mehrfacher Instantiierung die Performance gesteigert und Speicher gespart.

Kritik

Das Singleton Muster hat viele Nachteile und wird deswegen oft als Anti Pattern bezeichnet. Es ist auch über die Grenzen von OOP hinaus sehr beliebt. Es macht Objekte zentral zugänglich und schont Speicher/Performance, deswegen fasst es gern in prozeduralen Anwendungen Fuß. Für objektorientierte Programme ist das Muster aber in vielen Fällen eine Problemquelle, da es durch die globale Sichtbarkeit viele Abhängigkeiten im Programm verstreut.

Alternativen