Tho*_*mas 188 c# model-view-controller mvp design-patterns mvvm
如果我们使用短语"MVC,MVP和MVVM设计模式之间有什么区别"来搜索Google,那么我们可能会得到一些URL ,它们在理论上讨论了MVC MVP和MVVM设计模式之间的区别:
MVP
在无法通过datacontext进行绑定的情况下使用.Windows Forms就是一个很好的例子.为了将视图与模型分开,需要演示者.由于视图无法直接绑定到演示者,因此必须通过接口(IView)将信息传递给视图.
MVVM
在可以通过datacontext进行绑定的情况下使用.为什么?删除了每个视图的各种IView接口,这意味着需要维护的代码更少.可以使用MVVM的一些示例包括使用Knockout的WPF和javascript项目.
MVC
用于视图与程序其余部分之间的连接并不总是可用的情况(并且您无法有效地使用MVVM或MVP).这清楚地描述了Web API与发送到客户端浏览器的数据分离的情况.Microsoft的ASP.NET MVC是一个管理这种情况的好工具,并提供了一个非常清晰的MVC框架
但我没有找到一篇文章,从理论上和示例代码讨论差异.
如果我得到一篇文章讨论这3种设计模式(MVC,MVP和MVVM)与代码之间的区别,那将是非常好的.
我想了解3个类似的CRUD应用程序的源代码,这些应用程序已经通过这三种设计模式(MVC,MVP和MVVM)实现.这样我就可以浏览代码并理解应该如何为这三种设计模式(MVC,MVP和MVVM)编写代码.
因此,如果存在任何此类文章讨论代码对于这3种设计模式(MVC,MVP和MVVM)的外观有何不同,那么请将我重定向到该文章.
Pri*_*jee 92
一些基本的差异可以简写:
MVC:
传统的MVC就是有的
MVP:
与传统MVC类似,但Controller由Presenter取代.但是,与Controller不同,Presenter也负责更改视图.视图通常不会调用演示者.
MVVM
这里的不同之处在于View Model的存在.它是Observer Design Pattern的一种实现,其中模型中的更改也由VM表示在视图中.例如:如果更改了滑块,则不仅更新模型,而且还会更新视图中显示的可能是文本的数据.所以有一个双向数据绑定.
Udd*_*tam 35
MVC,MVP,MVVM
MVC(旧的)
MVP(由于其低耦合而更加模块化.Presenter是View和Model之间的中介)
MVVM(您已经在VM和UI组件之间进行了双向绑定,因此它比MVP更加自动化)

小智 32
链接的很好的解释:http://geekswithblogs.net/dlussier/archive/2009/11/21/136454.aspx
我们先来看一下MVC
输入首先指向Controller,而不是视图.该输入可能来自与页面交互的用户,但也可能只是将特定URL输入到浏览器中.在任何一种情况下,它都是一个与之连接的控制器,以启动某些功能.
Controller和View之间存在多对一关系.这是因为单个控制器可以基于正在执行的操作选择要呈现的不同视图.
从Controller到View有一种方向箭头.这是因为View对控制器没有任何了解或参考.
Controller确实传回了Model,因此View和传递给它的预期模型之间存在知识,但是不是Controller提供它.
MVP - 模型视图演示者
现在让我们来看看MVP模式.除了一些关键的区别外,它看起来与MVC非常相似:
输入以View开头,而不是Presenter.
View与关联的Presenter之间存在一对一映射.
View包含对Presenter的引用.Presenter也对从View触发的事件做出反应,因此它知道与之关联的View.
Presenter根据它在Model上执行的请求操作更新View,但View不支持Model.
MVVM - 模型视图视图模型
因此,在我们面前的MVC和MVP模式中,让我们看一下MVVM模式,看看它有什么不同之处:
输入以View开头,而不是View Model.
虽然View包含对View Model的引用,但View Model没有关于View的信息.这就是为什么它可以在各种视图和一个视图模型之间进行一对多映射...甚至跨技术.例如,WPF视图和Silverlight视图可以共享相同的视图模型.
| 归档时间: |
|
| 查看次数: |
138507 次 |
| 最近记录: |