Java Reference
In-Depth Information
private ToolTipManager()
{
System.out.println ("Neues Singleton erzeugt.");
}
public static ToolTipManager getInstance()
{
if (instance == null)
{
instance = new ToolTipManager();
}
return instance;
}
public void operation()
{
// eigentliche Funktionalitaet des Singleton
System.out.println ("operation() aufgerufen.");
}
}
Dieser Code ist nicht multi-threading-fähig. Der gleichzeitige Auf-
ruf von getInstance() aus mehreren Threads kann zu Proble-
men führen.
Auf die Synchronisierung eines derartigen Codes wird in der weiteren Behandlung die-
ses Musters noch eingegangen.
Vorsicht!
Dieses Beispiel zeigt, dass die Singleton-Klasse zur Verwirklichung der Singleton-
Funktionalität eine Referenz instance auf das Singleton-Objekt beinhalten muss.
Diese Referenz muss eine Klassenvariable sein ( static in Java), da auf sie in der
Klassenmethode getInstance() zugegriffen wird.
Die Methode getInstance() muss eine Klassenmethode sein,
da Client-Objekte auf diese Methode zugreifen, bevor überhaupt
ein Singleton-Objekt existiert.
Ein Aufruf der Methode operation() sieht damit folgendermaßen aus:
ToolTipManager.getInstance().operation();
Hierbei wird über den Klassennamen ToolTipManager auf die Klassenmethode
getInstance() zugegriffen, um eine Referenz auf das Singleton-Objekt zu erhalten.
Über diese Referenz wird dann die Instanzmethode operation() aufgerufen, die die
eigentliche Funktionalität des Singleton-Objekts bereitstellt.
Search WWH ::




Custom Search