想象一下带有客户列表的简单应用程序:
CustomerWindow: ICustomerView
{
private CustomerPresenter customerPresenter;
CustomerWindow()
{
this.customerPresenter = new CustomerPresenter(this);
}
}
当用户点击特定客户时,将显示客户数据编辑器窗口:
EditorWindow: IEditorView
{
private EditorPresenter editorPresenter;
EditorWindow()
{
this.editorPresenter= new EditorPresenter(this, ???);
}
}
EditorPresenter
必须知道用户选择的客户,但是查看对于正确初始化EditorPresenter
所需的客户模型和其他模型层参数一无所知。
我该如何解决这个问题?
答案 0 :(得分:0)
您需要退后一步,重新思考如何实施MVP模式。每个三元组应该是一个独立的单元。每个演示者都应该依赖于视图和“模型”。您拥有它以便您的视图取决于演示者。我不认为这是正确的。
我希望它能让EditorPresenter实例化一个IEditorView实例和一个Customer或CustomerRepository。
我为Windows Forms(shapemvp.codeplex.com)创建了一个基本的MVP框架,它说明了我认为MVP应该基于围绕这个主题的大量阅读来完成。它尚未完成,但有一个基本的示例应用程序,演示了您正在描述的功能。