模型 - 视图 - 展示器模式中“视图”的目的是什么?

时间:2011-08-30 15:57:16

标签: c# winforms user-interface mvp

我理解模型 - 视图 - 展示器模式是一个好模式的一般原因。它将关注点分开,以便处理向用户呈现信息的相同代码部分不用担心计算等问题。我的问题是为什么我们需要一个基本上什么都不做的视图?所有观点都告诉演示者做好工作并从演示者那里获得结果。例如,在我的C#视图中,我经常只有一堆事件处理程序来调用在演示者中实现的委托。为什么不组合视图和演示者?由于视图没有任何问题,因此没有真正分开关注。

2 个答案:

答案 0 :(得分:5)

两个重要的优点

  • 我们可以轻松编写多个视图或替换视图(例如WinForms => WPF实现)

  • 我们通过为单元测试创​​建测试视图来提高可测试性

答案 1 :(得分:3)

您的视图应该只是一种从用户那里获取数据的方法。任何与该功能无关的其他内容都应该下推到Presenter(或模型中,如果需要)。演示者处理视图获取的内容,但一旦获得视图,它就不应该关注视图。

演示者试图以更加语义的方式查看您的“UI”。您的视图中可能有2个文本框,但您的Presenter会看到名称和姓氏。我们的想法应该是,使用最少量的保险丝,您可以将视图从另一个视频中移开。

我不知道我对此有多赞同并且倾向于更喜欢没有Presenters的MVVM,而是使用ViewModel,我觉得这是定义上述抽象的更好方法。