レガシ .NET WebForms アプリケーションで使用する MVP (Supervising Controller and Passive View) パターンを示すサンプルを作成しています。懸念事項の分離を支援するために、StructureMap を簡単に紹介して、必要に応じてプレゼンテーション レイヤーを DAO/リポジトリと結び付けます。
私の質問は、アプリケーションのどの部分でObjectFactory.GetInstance<T>()
メソッドを呼び出す必要があるかということです。ビューは対応するプレゼンターを次のように通知するため、ビューでそれらを呼び出してきました。
partial class CustomerDetails : Page, ICustomerDetailsView
{
private readonly CustomerDetailsPresenter _presenter;
public CustomerDetails()
{
var rep = ObjectFactory.GetInstance<ICustomerRepository>();
this._presenter = new CustomerDetailsPresenter(this, rep);
}
// do work down here with normal ASP.NET events...
}
しかし、オブジェクトの作成を処理するためのより良い場所があるかどうかはわかりません。それをビューに入れると、ビューが何が起こっているのかを知りすぎているように思えます(プレゼンターについてだけでなく、リポジトリとStructureMapについても知っています)が、この種のコードは生きているはずです。