| Weitere Artikel aus dem Webentwickler Blog |
| Teilen |
Das Singleton-Entwurfsmuster ist ein in der Softwareentwicklung eingesetztes Muster und gehört zur Gruppe der Erzeugungsmuster. Es stellt sicher, dass zu einer Klasse lediglich genau ein Objekt erzeugt werden kann, und ermöglicht einen globalen Zugriff auf dieses Objekt. In der Praxis wird diese Technik verwendet, um ressourcenschonend zu programmieren. Verbindungen zu Ressourcen, die lediglich einmalig vorhanden sind, wie beispielsweise Dateien, werden über Singleton-Klassen verwaltet.
Weitere Anwendungsbeispiele für Singleton-Muster sind:
- Ein zentrales Protokollobjekt, das Ausgaben in eine Datei schreibt.
- Datenbankzugriffe, die mit einer Datenbank verbunden werden sollen und lediglich auf ein Verbindungsobjekt zurückgreifen.
Die folgende Singleton-Klasse soll Ihnen den Einstieg in die Welt der Entwurfsmuster erleichtern. Beispiel für ein Singleton-Entwurfsmuster in PHP:
Beispiel für eine Singleton-Anwendung in PHP:
Ausgabe:
Keine Meldung im Objekt Sie sind herzlich Willkommen! Auf Wiedersehen!
Das Beispiel nutzt in jeder Klasse, die ein Singleton verwendet, immer wieder dasselbe Objekt, da eine erneute Erzeugung im Rahmen eines einfachen Methodenaufrufs völlig sinnlos wäre – man hätte am Ende lediglich eine Anzahl verwaister Objekte im Speicher.
Darüber hinaus wird durch die private-Deklaration für den Konstruktor (__construct) und die __clone()-Methode verhindert, dass doch noch mehr Objekte erzeugt werden.
Singleton-Konventionen:
Um ein Singleton in PHP zu implementieren, sind folgende Schritte durchzuführen: 1. Deklarieren Sie eine statische Klasseneigenschaft, die das Exemplar der Klasse speichert. 2. Implementieren Sie eine statische Methode, die das gespeicherte Exemplar zurückgibt und gegebenenfalls dieses Exemplar erstellt, falls es noch nicht vorhanden ist. 3. Stellen Sie sicher, dass keine weiteren Instanzen durch Verwendung des new-Operators möglich sind, indem Sie den Konstruktor als private oder protected deklarieren. 4. Stellen Sie sicher, dass das Exemplar der Klasse nicht geklont werden kann, indem Sie die __clone()-Methode als private deklarieren. Wenn Sie diese Schritte befolgen, steht dem Einsatz von Singleton-Entwurfsmustern nichts im Wege.
Dieser Abschnitt wurde dem Buch “PHP 5 – Objektorientierte Programmierung” von Matthias Kannengiesser entnommen, das im Franzis Verlag erschienen ist. Sie können es hier direkt bestellen.



































