Ich habe unzählige Male von den Fallstricken der Singletons / Globals gehört und verstehe, warum sie so oft verpönt werden.
Was ich nicht verstehe, ist, was die elegante, unordentliche Alternative ist. Es scheint, dass die Alternative zur Verwendung von Singletons / Globals immer darin besteht, Objekte eine Million Ebenen tiefer durch Ihre Engine-Objekte zu leiten, bis sie die Objekte erreichen, die sie benötigen.
Zum Beispiel lade ich in meinem Spiel einige Assets vor, wenn das Spiel gestartet wird. Diese Assets werden erst viel später verwendet, wenn der Spieler durch das Hauptmenü navigiert und das Spiel betritt. Soll ich diese Daten von meinem Game-Objekt an mein ScreenManager-Objekt übergeben (obwohl nur ein Bildschirm diese Daten tatsächlich berücksichtigt), dann an das entsprechende Screen-Objekt und an einen anderen Ort?
Es scheint nur, dass ich globale Zustandsdaten gegen überfüllte Abhängigkeitsinjektionen eintausche und Daten an Objekte weitergebe, die sich nicht einmal um die Daten kümmern, außer um sie an untergeordnete Objekte weiterzugeben.
Ist dies ein Fall, in dem ein Singleton eine gute Sache wäre, oder gibt es eine elegante Lösung, die ich vermisse?