我正在创建一个示例来说明用于旧版 .NET WebForms 应用程序的 MVP(监督控制器和被动视图)模式。为了帮助分离一些关注点,我还将根据需要简单地引入 StructureMap 以将表示层与 DAO/Repositories 连接起来。
我的问题是应用程序的哪一部分应该调用这些ObjectFactory.GetInstance<T>()
方法?我一直在 View 中调用它们,因为 View 通知了其相应的演示者,如下所示:
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,而不仅仅是了解演示者),但我想不出任何其他地方有这种代码应该存在。