Java Reference
In-Depth Information
Die im Folgenden dargestellte Klasse Client ruft im Programm die Methode Tool-
TipManager.getInstance().operation() dreimal hintereinander auf:
// Datei: Client.java
public class Client
{
public static void main (String[] args)
{
ToolTipManager.getInstance().operation();
ToolTipManager.getInstance().operation();
ToolTipManager.getInstance().operation();
}
}
In der Programmausgabe sieht man, dass das Objekt nur ein
einziges Mal erzeugt wird:
Neues Singleton erzeugt.
operation() wird aufgerufen.
operation() wird aufgerufen.
operation() wird aufgerufen.
Der interessanteste Teil einer Singleton-Implementierung ist jedoch der Rumpf der
Methode getInstance() selbst, sowie die Definition der Referenz instance . An
diesen beiden Stellen unterscheiden sich die oben genannten zwei Varianten zur
Erzeugung des Singleton-Objekts. Die gerade vorgestellte Variante erzeugt - wie in
[Gam95] - das Singleton-Objekt erst dann, wenn die Methode getInstance()
aufgerufen wird. Der Vorteil bei dieser Variante liegt darin, dass die Objekterzeugung
wirklich nur dann erfolgt, wenn tatsächlich ein Client-Objekt das Singleton-Objekt
benötigt. Der Nachteil ist eine leichte Verschlechterung der Performance bei weiteren
Zugriffen auf die Methode getInstance() , da jedes Mal der Vergleich (instance
== null) ausgeführt werden muss, der nach dem ersten Aufruf sowieso immer
negativ ausfällt.
Programmierbeispiel Variante 2
Ist der (fast immer überflüssige) Vergleich und die damit einhergehende Verschlech-
terung der Performance unerwünscht, so kann auf die zweite Variante des Singleton-
Musters [Gr102] zurückgegriffen werden.
In der zweiten Variante erfolgt die Erzeugung des Singleton-
Objekts "statisch", d. h. sofort bei Programmstart oder im Falle
von Java beim Laden der Singleton-Klasse durch den Klassenla-
der, wenn die Klasse zum ersten Mal benutzt wird.
Der Vorteil bei dieser Variante ist, dass der oben genannte Vergleich in der Methode
getInstance() gänzlich entfällt. Folgendes Beispiel zeigt diese Variante:
Search WWH ::




Custom Search