J'ai entendu d'innombrables fois les pièges des singletons / mondiaux, et je comprends pourquoi ils sont si souvent désapprouvés.
Ce que je ne comprends pas, c'est quelle est l'alternative élégante et non salissante. Il semble que l'alternative à l'utilisation de singletons / globaux implique toujours de faire passer des objets un million de niveaux à travers les objets de votre moteur jusqu'à ce qu'ils atteignent les objets qui en ont besoin.
Par exemple, dans mon jeu, je précharge certains éléments au démarrage du jeu. Ces ressources ne sont utilisées que bien plus tard lorsque le joueur navigue dans le menu principal et entre dans le jeu. Suis-je censé transmettre ces données de mon objet Game, à mon objet ScreenManager (malgré le fait qu'un seul écran se soucie réellement de ces données), puis à l'objet Screen approprié, et ailleurs?
Il semble juste que j'échange des données d'état globales pour une injection de dépendance encombrée, en passant des données à des objets qui ne se soucient même pas des données, sauf dans le but de les transmettre à des objets enfants.
Est-ce un cas où un Singleton serait une bonne chose, ou y a-t-il une solution élégante qui me manque?