【问题标题】:Correct use of Model in Presenter with MVP-VM Design Pattern使用 MVP-VM 设计模式在 Presenter 中正确使用模型
【发布时间】:2015-04-30 14:42:36
【问题描述】:

我正在自学模型视图演示者视图模型设计模式,以准备加入一个新项目,该项目将使用该模式和 WinForms(不是 WPF)。

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

由于显示方式不同,我的问题是,演示者的正确实现是什么,应该像 MVP 一样传递视图和模型,或者使用什么样式无关紧要?

谢谢

【问题讨论】:

    标签: c# design-patterns mvp


    【解决方案1】:

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


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

    一、MVP(传统)主要有两种做法:

    这些链接来自 Jeremy Miller 出色且不完整的“构建自己的 CAB”系列。 MSDN 上还有this article 供进一步阅读。

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

    • 演示者优先
    • 先查看

    您可以想象,这意味着您从 Presenter 开始,然后请求/构造视图,反之亦然。有多种拍摄方法,没有一种是“错误的”。

    这种解耦的主要驱动力是单元测试。如果您的解耦能够通过诸如抽象实现和分离关注点之类的事情进行测试,那么您没有做错。

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


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

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

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

    【讨论】:

    • 感谢您的回复。我相信架构师想要使用 DevExpress,这是他们为 WinForms 推荐的模式。
    • @Andy5 这是一个不错的选择,虽然我可能会提倡 WPF 而不是 WinForms。
    猜你喜欢
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多