0

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

CustomerWindow: ICustomerView
{
    private CustomerPresenter customerPresenter;

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

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

EditorWindow: IEditorView
{
    private EditorPresenter editorPresenter;

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

EditorPresenter必须知道用户选择的客户,但视图不知道客户模型和正确初始化EditorPresenter.

我怎么解决这个问题?

4

1 回答 1

0

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

我希望 EditorPresenter 使用 IEditorView 的实例和 Customer 或 CustomerRepository 进行实例化。

我已经为 Windows 窗体 ( shapemvp.codeplex.com ) 创建了一个基本的 MVP 框架,它说明了我认为 MVP 应该如何基于围绕该主题的大量阅读来完成。它尚未完成,但有一个基本的示例应用程序,可以演示您所描述的功能类型。

于 2013-11-20T11:29:30.120 回答