Java Reference
In-Depth Information
4.20 Das Erzeugungsmuster Singleton
4.20.1
Name/Alternative Namen
Singleton.
4.20.2
Problem
Es soll eine Klasse geben, von der sichergestellt werden muss, dass nur eine einzige
Instanz von ihr existiert. Dabei soll es für ein Client-Programm irrelevant sein, ob die
einzige Instanz bereits erzeugt worden ist oder nicht. Für das Erzeugen der einzigen
Instanz soll die genannte Klasse selbst verantwortlich sein.
Das
Singleton-Muster
soll gewährleisten, dass eine Klasse nur
ein einziges Mal instanziiert werden kann.
4.20.3
Lösung
Die Klasse, von der es nur ein einziges Objekt geben darf, wird im Folgenden
Sing-
leton
genannt. Ein Client, der mit dem Singleton-Objekt arbeiten will, bekommt eine
Referenz auf dieses Singleton-Objekt. Das Singleton-Muster ist somit ein objektbasier-
tes Entwurfsmuster.
Ein Singleton-Objekt kann nur von der Klasse
Singleton
selbst erzeugt werden. Alle
Konstruktoren dieser Klasse werden mit dem Zugriffsmodifizierer
private
gekenn-
zeichnet, so dass andere Klassen kein Objekt unter Verwendung eines Konstruktors
erzeugen können. Objekte, die die Klasse
Singleton
verwenden möchten, erhalten
von der Klassenmethode
getInstance()
der Klasse
Singleton
eine Referenz auf
das einzig existierende Objekt der Klasse
Singleton
zurück.
Für die Erzeugung des einzigen Exemplars der Klasse
Singleton
durch die Klasse
Singleton
selbst gibt es zwei unterschiedliche Vorgehensweisen.
Bei der ersten Variante, wie sie in [Gam95] zu finden ist, wird das Singleton-Objekt
erst erzeugt, wenn ein Client-Objekt zum ersten Mal die Methode
getInstance()
aufruft. Wird diese Methode jedoch aus mehreren Threads gleichzeitig aufgerufen, so
könnte dies zur Erzeugung mehrerer Objekte führen. Um dies zu vermeiden, müssen
entsprechende Synchronisationsmechanismen eingesetzt werden, die sich jedoch je
nach Programmiersprache unterscheiden.
Die zweite Methode ist unter anderem in [Gr102] zu finden. Dabei wird das Singleton-
Objekt bereits beim Laden der Klasse erzeugt, unabhängig davon, ob das Singleton-
Objekt jemals gebraucht wird oder nicht.
Search WWH ::
Custom Search