Model view controller MVC、MVP和MVVM之间有什么区别?

Model view controller MVC、MVP和MVVM之间有什么区别?,model-view-controller,design-patterns,mvvm,mvp,Model View Controller,Design Patterns,Mvvm,Mvp,据我所知,前两个似乎没有什么不同。无论它被称为控制器还是演示器,它似乎仍然具有相同的中介功能 MVVM似乎有点不同,因为控制器似乎更像是框架的一部分,比如XAML绑定 “克里夫笔记”对差异的解释是什么?差异在于模型层的数据在视图实例中的结束方式 在经典MVC(以及Model2 MVC)中,视图是活动结构。它从模型层请求信息。控制器仅更改模型层和视图的状态 在MVP中,视图是被动的。相反,演示者从模型层请求信息并将其传递给视图。您可以更广泛地阅读有关MVP模式的内容 在中,MVVM与MVP类似,

据我所知,前两个似乎没有什么不同。无论它被称为控制器还是演示器,它似乎仍然具有相同的中介功能

MVVM似乎有点不同,因为控制器似乎更像是框架的一部分,比如XAML绑定


“克里夫笔记”对差异的解释是什么?

差异在于模型层的数据在视图实例中的结束方式

  • 在经典MVC(以及Model2 MVC)中,视图是活动结构。它从模型层请求信息。控制器仅更改模型层和视图的状态
  • 在MVP中,视图是被动的。相反,演示者从模型层请求信息并将其传递给视图。您可以更广泛地阅读有关MVP模式的内容
  • 中,MVVM与MVP类似,但viewmodel必须在将信息传递给view之前对其进行操作
MVP和MVVM的区别在于开发过程。在为已知模型层创建表示层时,您将使用MVP模式


但是,如果您有一个预先存在(或由于某种原因-不可更改)的用户界面和预先存在(或不可更改)的模型层,则必须使用MVVM。你必须让他们一起工作。这就是viewmodel发挥作用的地方。

Glenn Block在[here][1][1]上解释得非常清楚:实际上并不清楚,因为他的MVC描述只是对MVP的改写。这一描述虽然被高票否决,但却是错误的。这更多的是试图说明ASP.NETMVC实现了这两种模式。Model2在PHP中是如何工作的?控制器->视图->模型层(不同的部分需要不同的交互:侧栏、导航)?这就是当前视图可以使用多个模板的原因。您有用于导航的模板、用于侧栏的模板、用于文档列表的模板等等。视图从模型中获取信息,并根据该信息决定如何显示结果。我想你们可能也对HMVC模式感兴趣。它从一个稍微不同的角度来处理这个问题。似乎拥有一个更主动的视图意味着,如果我的视图需要xml而不是json,这将比让我的控制器来处理这个问题简单得多。在MVP中,当使用监控控制器而不是被动视图时,视图可能会有些主动