在简单的WinForms应用程序中使用Passive View MVP的问题

时间:2013-11-20 11:20:06

标签: c# winforms design-patterns mvp passive-view

想象一下带有客户列表的简单应用程序:

CustomerWindow: ICustomerView
{
    private CustomerPresenter customerPresenter;

    CustomerWindow()
    {
        this.customerPresenter = new CustomerPresenter(this);
    }
}

当用户点击特定客户时,将显示客户数据编辑器窗口:

EditorWindow: IEditorView
{
    private EditorPresenter editorPresenter;

    EditorWindow()
    {
        this.editorPresenter= new EditorPresenter(this, ???);
    }
}

EditorPresenter必须知道用户选择的客户,但是查看对于正确初始化EditorPresenter所需的客户模型和其他模型层参数一无所知。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您需要退后一步,重新思考如何实施MVP模式。每个三元组应该是一个独立的单元。每个演示者都应该依赖于视图和“模型”。您拥有它以便您的视图取决于演示者。我不认为这是正确的。

我希望它能让EditorPresenter实例化一个IEditorView实例和一个Customer或CustomerRepository。

我为Windows Forms(shapemvp.codeplex.com)创建了一个基本的MVP框架,它说明了我认为MVP应该基于围绕这个主题的大量阅读来完成。它尚未完成,但有一个基本的示例应用程序,演示了您正在描述的功能。