Warum? Nur weil Borlemba da schlampt und kein echtes Singleton (Application) davon macht?
Singletons sind fast globale Variablen.
Haben ja auch fast alle Probleme, die generell mit globalem State auftauchen. Eine Ausnahme, die mir gerade in den Sinn kommt, wären immutable Objekte. Da sollte es keine Probleme mit Threads und anderen Nebenläufigkeiten geben. Aber auch die können per DI oder schlicht als Parameter durchgeschliffen werden.
Eben nur fast ...
Das
Böse an globalen Variablen ist doch, dass diese eingesetzt werden, wo es sich absolut nicht um etwas Globales handelt und durch die Verwendung bekomme ich Abhängigkeiten die die Wiederverwendbarkeit nicht zulässt.
Wie schon festgestellt wurde, gibt es aber durchaus die Anforderung nach einer einzigen globalen Instanz, die naturbedingt auch nur einmal pro Anwendung vorkommen kann (Application, Screen, etc.).
Nimmt man hier aber jetzt eine globale Variable, so kann diese Variable auch
üb
ereschrieben werden, ohne dass die abhängigen Teile darüber informiert werden.
Gerade im Thread-Umfeld muss auch bedacht werden, dass eine globale Variable eben
nicht threadsafe ist. Somit ist das in so einem Umfeld der vorgeplante
Schuss ins Knie.