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:

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