Wednesday, June 06, 2007

Singletons: Bitte nicht als Ersatz für globalen Variablen

Vor 1 1/2 Jahren habe ich schon mal etwas über das Singleton-Pattern geschrieben. Damals ging es um die Implementierung in Java. Auch damals hatte ich schon geschreiben

Merke: Wenn Singleton (meist ist dies keine so gute Idee), dann doch bitte nur mit private-Konstruktor.

Einen Vorteil hat das Singleton-Pattern gegenüber den anderen GoF-Pattern. Es ist absolut einfach zu verstehen. Das Klassendiagramm enthält nur eine einzige Klasse und das Singleton hat nichtmal einen Clienten. Es ist in vielen Kursen (zum Beispiel auch in Modellbasierte Softwareentwicklung) eines der ersten oder das erste Pattern, dass vorgestellt wird.

Dies führt dazu, dass es zu jedem nur denkbaren Zeitpunkt eingesetzt wird. Nachdem ich mich im Moment in ein Open Source Projekt einarbeite in dem Klassen mit Singleton-Eigenschaft nicht die Ausnahme sondern die Regel sind, ist es Zeit etwas auszuführen, warum das Singleton-Pattern meist keine so gute Idee ist.

Nicht, dass es für das Singleton-Pattern keine sinnvolle Verwendung gibt, aber meine Schätzung ist, dass es in 90% der Fällen als Ersatz für globale Objekte verwendet wird anstatt für den eigentlichen Zweck. Singleton ist eine Erzeugungsmuster. Es dient dazu sicherzustellen, dass niemals mehr als eine Instanz einer Klasse existieren.

(more...)

No comments:

Post a Comment