伙计们,我浏览了许多链接/博客。我看到他们中的大多数人无法用外行语言清晰地交流,以及 MVP、MVVM 和 MVC 之间的技术差异。我知道每个角色代表什么,也曾为 MVP 工作过。但是真的不明白是否有人问我同样的问题。为什么我不能在 MvP 中使用控制器而不是 Presenter ?为什么在 MVVM 中查看模型而不是演示者,它有什么不同?我可以用一句话说“MVC 针对 ASP.NET 进行了优化,并且在 VS 中也有模板,MVP 针对 winforms 和针对 SL/WPF 的 MVVM 进行了优化,因为它支持内置绑定功能等”。但我觉得这不是我必须了解的,而是详细而深入的。有人可以通过详细的解释和用法以及选择一个的实际理由来阐明这一点。谢谢你们...
2 回答
我不能给你一个完整的答案,但是我确实很难学习其中的一些模式,并且可能能够让你了解一些主要差异。
我先学了MVVM,然后学了MVC。我知道 MVP 以及它在理论上是如何工作的,但是我从未真正用它构建过应用程序。
设计模式之间最大的区别似乎是由谁控制应用程序流程和逻辑。
在MVVM中,您的代码类 ( ViewModels
) 是您的应用程序,而您Views
的只是一个非常用户友好的界面,位于应用程序代码之上并允许用户与之交互。这意味着ViewModels
他们的工作量很大,因为他们是您的应用程序,负责从应用程序流程到业务逻辑的所有事情。
使用MVC,您Views
就是您的应用程序,而您Controller
处理应用程序流程。应用程序逻辑通常在 中找到ViewModels
,它们被认为是M
MVC 中的一部分(旁注:M
MVC 中的 不能被认为与M
MVVM 中的相同,因为 MVC 的M
层比 MVVM 的层包含更多的功能M
)。给用户一个屏幕 ( View
),他们与之交互,然后向 提交一些内容Controller
,然后Controller
决定谁对数据做什么,View
并向用户返回一个新的。
我没有使用过MVP,但是我对它的理解与 MVC 非常相似,但针对桌面应用程序而不是客户端/服务器应用程序进行了优化。它们是实际的Views
应用程序,而Presenter
处理应用程序事件和业务逻辑。
在 MVC 中,您将模型视图控制器链接为三角形 在 MVP 中,您将模型视图演示器链接为线性 基本上 MVC 和 MVP 非常相似,但是使用 MVC 更简单,即使您已经内置了 MS 插件来创建和分离你的 MVC 提供了它的优势 有了 MVP,你的应用程序看起来就像一个通用的 ASP.NET 应用程序,这意味着:没有 Razor,没有 .cshtml 用于视图等,你必须自己处理结构。MVVM 通常用于 Silverlight/WPF,对于那些技术人员来说,它是最佳选择。MVVM 和 MVC 的思想非常相似。如果您使用淘汰赛,您还可以在 Web 应用程序的客户端应用 MVVM。