私はシングルトン/グローバルの落とし穴について何度も聞いていますが、なぜ彼らがそれほど頻繁に眉をひそめているのか理解しています。
私が理解していないのは、エレガントで乱雑な選択肢が何であるかということです。シングルトン/グローバルを使用する代わりに、オブジェクトを必要とするオブジェクトに到達するまで、オブジェクトをエンジンオブジェクトに何百万レベルも渡すことが常に必要になるようです。
たとえば、私のゲームでは、ゲームの起動時にいくつかのアセットをプリロードします。これらのアセットは、プレーヤーがメインメニューをナビゲートしてゲームに入るまでずっと使用されません。このデータをGameオブジェクトからScreenManagerオブジェクトに(実際には1つのScreenのみがこのデータを処理するという事実にもかかわらず)、次に適切なScreenオブジェクト、およびその他の場所に渡すことになっていますか?
混乱した依存関係の注入のためにグローバル状態データを交換しているように見えますが、子オブジェクトに渡す目的以外はデータを気にしないオブジェクトにデータを渡します。
これは、シングルトンが良いことなのでしょうか、それとも私が見逃しているエレガントな解決策がありますか?