C#如何以一对多的形式使用视图演示者模式?

时间:2011-07-03 19:53:54

标签: c# winforms design-patterns mvp

我正在努力实现模型 - 视图 - 展示器模式。我使用这种模式的方式如下:

  • 我为表单
  • 创建了一个视图(= interface)
  • 我为表单创建了一个presenter,它接受视图作为构造函数中的参数
  • 表单实现视图并创建演示者对象。

现在我有一张公司可以注册的表格。但是可以有多个联系人。所以,在这张表格上我有一个联系人网格。

我的问题是,我应该将联系人字段添加到与其他公司字段相同的视图中吗?或者我应该在另一个视图中分隔它,以便表单实现两个视图(ICompanyView和IContactPersonView)与两个演示者类?

2 个答案:

答案 0 :(得分:2)

首先,不要让您的视图实例化演示者,您不希望这样。无论您使用MVP(被动视图,监督控制器)的风格如何,您的视图应尽可能少。我所做的是在presenter构造函数中有一个视图,并在presenter Initialize()方法中我分配view.Presenter = this(你也可以在Start()或其他一些“show”方法中执行此操作,但我通常将Initialization分隔到另一个因为演示者生命周期问题而致电)

至于你的多视图问题,如果你在表单的那一部分有复杂的逻辑(但我在你的例子中没有看到它),你可以将它分开在单独的用户控件/ MVP三元组中 - 这有助于我减少并简化演示者的代码。

答案 1 :(得分:1)

如果你只需要IContactPersonView / ICompanyView而不是拆分它们,那么就不要这样做。