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