使用 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 中,您需要在后台创建大量引导代码来管理诸如显示/隐藏视图、导航、创建/处理演示者等内容。
我正在自学 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 中,您需要在后台创建大量引导代码来管理诸如显示/隐藏视图、导航、创建/处理演示者等内容。