使用 MVP-VM 设计模式在 Presenter 中正确使用模型

Correct use of Model in Presenter with MVP-VM Design Pattern

我正在自学 Model View Presenter View Model Design Pattern 以准备加入一个新项目,该项目将使用 WinForms(不是 WPF)的模式。

在我的研究中,我看到了使用 Presenter 时模式的不同用途。我见过的一些网站通过构造函数传入 ViewModel 对象和视图,另一个网站将模型作为接口和视图传入,最后另一个只是在演示者中实例化模型的视图 class .

随着显示方式的不同,我的问题是,presenter 的正确实现是什么,应该像 MVP 一样传递视图和模型,或者不管使用什么样式?

谢谢

简短回答: 在我看来,这并不重要,只要您保持一致并确保已将部件分离以进行测试即可。


您遇到很多不同的文章有两个主要原因。

一、MVP(传统)主要有两种途径:

这些链接来自 Jeremy Miller 的伟大但不完整的 "Build your own CAB" 系列。 MSDN 上还有 this article 供进一步阅读。

二、主要建设路线也有两条:

  • 主持人优先
  • 先查看

如你所想,一个意味着你从一个Presenter开始,然后它请求/构造一个视图,反之亦然。有各种各样的镜头,其中 none 是 "wrong"。

这种分离的主要驱动力是单元测试。如果你的解耦能够通过抽象实现和分离关注点等方式进行测试,那么你还没有做到 "wrong".

您的 MVP-VM 混合方法也没有错,但您需要查看所扮演的角色以及该方法每个部分中包含的职责。


我和你之前做的完全一样,自学这个模式。由于互联网上出现了各种不同的方法,我让自己陷入了一种学习僵局,我一直担心自己做错了事情。

然后我意识到我非常担心该模式的特定实现。模式的重点不在于它的实现,而在于它试图实现的目标和它试图解决的问题。 MVP 是 UI 层的解耦和关注点分离方法,特别适合 WinForms。它与 MVVM 和 MVC 共享此目的。坚持租户并忽略实施细节差异,你会做得很好。

我在某处有一个包含此学习之旅的旧示例应用程序。在 WinForms 中,您需要在后台创建大量引导代码来管理诸如显示/隐藏视图、导航、创建/处理演示者等内容。