プレゼンター クラスから新しいドメイン クラスをリファクタリングしましたが、インスタンス化する場所がわかりません。
これは、メンテナンスが不十分なレガシー プロジェクトで進行中の大規模なリファクタリング作業の一部です。
プレゼンターは現在、ビューの OnLoad イベントによって作成されており、ビューはコンストラクターのパラメーターとして渡されます。プレゼンターのすべてのパブリック メソッドはパラメーターなしで、void を返します。これらは、ビューのパブリック プロパティを使用してビューと通信します。
基本的に控えめな形式であるビューは、すべての点でプレゼンターに完全に依存しています。
これは典型的な Passive View のパターンであり、私はそれを守り続けたいと思っています。それは私のジレンマに私をもたらします。プレゼンターが使用する新しいドメイン オブジェクトのインスタンスを作成する必要があります。
- コンストラクターを介して渡すと、ビューはそれを作成する必要があり、不要な依存関係が得られます。
- プレゼンター内のどこかに作成すると、単体テストでモック オブジェクトに置き換えることができません。
- プレゼンターのパブリック プロパティにすると、それが使用されるプレゼンター メソッドに作成順序の依存関係が導入されますが、どの外部クラスがそれを作成する責任を負うのかまだ解決していません。
現在、依存性注入フレームワークは使用していません。将来的に使用することに興味がありますが、サードパーティのフレームワークをミックスに導入するには、ソースコードはまだ脆弱です。
私はどんな提案にもオープンです。