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