Das Singleton Pattern ist ein Erzeugungsmuster der GoF von Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides, das sicherstellt, dass eine Klasse nur eine Instanz hat, und einen globalen Zugriffspunkt darauf bietet. Es zielt auf Fälle, in denen es genau eine Instanz geben muss. Die moderne Praxis stuft es verbreitet als Anti-Pattern ein, weil es globalen veränderlichen Zustand schafft und Abhängigkeiten versteckt, und Erich Gamma selbst sagte 2009, er würde es aus dem Katalog streichen.

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