M
Das Problem bei Singletons ist die starke Bindung. Man erstellt eine Klasse, davon kann es nur eine Instanz geben, und dann kommen tausend andere Klassen und benutzen diese eine Instanz. Passt. Aber dann ist die Anwendung über Jahre gewachsen und man überlegt sich, jetzt wärs aber schön, aus dieser Klasse eine Schnittstelle zu extrahieren und verschiedene Implementierungen davon anzubieten. Oder vielleicht doch mal eine andere Instanz zu erstellen, was vorher nicht gewünscht war. Und schon hat man das Problem das man alles umbauen und testen muss. Testen ist das nächste Problem, Singletons sind schlecht für Unit Tests. Wenn sich jedes Objekt, das man testen will einfach die Singleton Instanz schnappt, kann man schlecht ein Mockup Objekt mit genau definiertem Verhalten reingeben. Diese Probleme habe ich schon sehr oft gesehen.
Nichts destotrotz haben Singletons durchaus ihre Daseinsberechtigung, man muss nur verstehen, worauf man sich einlässt.