GoF-Singleton Pattern
Details
- Vollständiger Name
-
GoF Singleton Pattern (Creational)
Absicht:
Stelle sicher, dass eine Klasse nur eine Instanz hat, und biete einen globalen Zugriffspunkt darauf.
Wann zu verwenden:
-
Wenn es genau eine Instanz einer Klasse geben muss
-
Wenn die einzige Instanz durch Unterklassenbildung erweiterbar sein soll
Prompt-Beispiel:
"Stelle sicher, dass der ConfigManager als GoF-Singleton implementiert ist, mit thread-sicherem Lazy Loading."
Verwandte Anker:
-
GoF Design Patterns (Umbrella)
Kritik:
-
Erich Gamma, Mitautor des GoF-Originals, sagte 2009 im Interview "Design Patterns 15 Years Later" (InformIT, Larry O’Brien), er würde Singleton aus dem Pattern-Katalog streichen: "Its use is almost always a design smell"
-
Miško Hevery, "Singletons are Pathological Liars" (Google Testing Blog, 2008) — Singletons verstecken Abhängigkeiten vor der API-Oberfläche und machen Code schwer isoliert testbar
-
In der modernen Praxis verbreitet als Anti-Pattern eingestuft: globaler veränderlicher Zustand, Kopplung an eine konkrete Klasse, erschwerte Nebenläufigkeit und Testisolation — Dependency Injection einer einzelnen Instanz ist die übliche empfohlene Alternative