問題
私は最近、シングルトンが悪いことと、依存性注入(「インターフェースを使用する」と理解しています)がどのように優れているかについて、多くのことを読みました。コールバック/インターフェース/ DIを使用してこの一部を実装し、インターフェース分離の原則に準拠した場合、結局は混乱しました。
基本的にそのすべての子の依存関係を組み合わせたUI親の依存関係。したがって、UI要素が階層の上位にあるほど、そのコンストラクターは肥大化していました。
UI階層の最上位にあるのはApplicationクラスで、現在の選択に関する情報と、変更を反映する必要のある3Dモデルへの参照を保持していました。アプリケーションクラスは8つのインターフェイスを実装していましたが、これは製品(/インターフェイス)の5分の1に過ぎません。
私は現在、現在の選択を保持するシングルトンと、自分自身を更新する機能を持つUI要素を使用しています。この関数は、UIツリーとUI要素を細流化し、必要に応じて現在の選択シングルトンにアクセスします。コードはこのように私にはきれいに見えます。
質問
このプロジェクトにはシングルトンが適切でしょうか?
そうでない場合、私の考えやDIの実装に根本的な欠陥があり、それが非常に煩雑になりますか?
プロジェクトに関する追加情報
タイプ:ベルとホイッスル付きのアパートメントのショッピングバスケット
サイズ:コードとUIに2か月/月
メンテナンス:実行中の更新はありませんが、後で「バージョン2.0」になる可能性があります
環境:エンティティを使用するUnityでC#を使用コンポーネントシステム
ほとんどすべての場合、ユーザーの操作によっていくつかのアクションがトリガーされます。たとえば、ユーザーがアイテムを選択したとき
- そのアイテムとその説明を表示するUIパーツを更新する必要があります。このため、価格を計算するために、3Dモデルから情報を取得する必要もあります。
- UIをさらに上に行くと、全体の合計価格を更新する必要があります
- 3dモデルのクラスの対応する関数を呼び出して、そこに変更を表示する必要があります