gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:34:38 26 4
gpt4 key购买 nike

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

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

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

谢谢

最佳答案

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


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

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

这些链接来自杰里米·米勒 (Jeremy Miller) 的伟大但不完整的“构建您自己的 CAB”系列。还有this article在 MSDN 上进一步阅读。

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

  • 演示者优先
  • 先查看

如您所想,一个意味着您从 Presenter 开始,然后 Presenter 请求/构建 View ,反之亦然。有各种各样的看法,但没有一个是“错误的”。

这种分离的主要驱动力是单元测试。如果您的解耦能够通过抽象实现和分离关注点等方式进行测试,那么您并没有做“错”。

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


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

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

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

关于c# - 使用 MVP-VM 设计模式在 Presenter 中正确使用模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29970753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com