MVC,MVP 和 MVVM 的区别
2017-12-29 11:27
169 查看
MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。它本身很容易理解,但是要讲清楚,它与衍生的
MVP 和 MVVM 架构的区别就不容易了。
MVC模式的意思是,软件可以分成三个部分。
视图(View):用户界面。
控制器(Controller):业务逻辑
模型(Model):数据保存
MVC是比较直观的架构模式,用户操作->View(负责接收用户的输入操作)->Controller(业务逻辑处理)->Model(数据持久化)->View(将结果反馈给View)。
MVC使用非常广泛,比如JavaEE中的SSH框架(Struts/Spring/Hibernate),Struts(View, STL)-Spring(Controller, Ioc、Spring MVC)-Hibernate(Model, ORM)以及ASP.NET中的ASP.NET MVC框架,xxx.cshtml-xxxcontroller-xxxmodel。(实际上后端开发过程中是v-c-m-c-v,v和m并没有关系,下图仅代表经典的mvc模型)
View 传送指令到 Controller
Controller 完成业务逻辑后,要求 Model 改变状态
Model 将新的数据发送到 View,用户得到反馈
所有通信都是单向的。
MVP是把MVC中的Controller换成了Presenter(呈现),目的就是为了完全切断View跟Model之间的联系,由Presenter充当桥梁,做到View-Model之间通信的完全隔离。
1. 各部分之间的通信,都是双向的。
2. View 与 Model 不发生联系,都通过 Presenter 传递。
3. View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。
如果说MVP是对MVC的进一步改进,那么MVVM则是思想的完全变革。它是将“数据模型数据双向绑定”的思想作为核心,因此在View和Model之间没有联系,通过ViewModel进行交互,而且Model和ViewModel之间的交互是双向的,因此视图的数据的变化会同时修改数据源,而数据源数据的变化也会立即反应到View上。vue.js、angular都采用这种模式。
参考资料:
http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html
MVP 和 MVVM 架构的区别就不容易了。
一、MVC
MVC模式的意思是,软件可以分成三个部分。视图(View):用户界面。
控制器(Controller):业务逻辑
模型(Model):数据保存
MVC是比较直观的架构模式,用户操作->View(负责接收用户的输入操作)->Controller(业务逻辑处理)->Model(数据持久化)->View(将结果反馈给View)。
MVC使用非常广泛,比如JavaEE中的SSH框架(Struts/Spring/Hibernate),Struts(View, STL)-Spring(Controller, Ioc、Spring MVC)-Hibernate(Model, ORM)以及ASP.NET中的ASP.NET MVC框架,xxx.cshtml-xxxcontroller-xxxmodel。(实际上后端开发过程中是v-c-m-c-v,v和m并没有关系,下图仅代表经典的mvc模型)
View 传送指令到 Controller
Controller 完成业务逻辑后,要求 Model 改变状态
Model 将新的数据发送到 View,用户得到反馈
所有通信都是单向的。
二、MVP
MVP是把MVC中的Controller换成了Presenter(呈现),目的就是为了完全切断View跟Model之间的联系,由Presenter充当桥梁,做到View-Model之间通信的完全隔离。1. 各部分之间的通信,都是双向的。
2. View 与 Model 不发生联系,都通过 Presenter 传递。
3. View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。
三、MVVM
如果说MVP是对MVC的进一步改进,那么MVVM则是思想的完全变革。它是将“数据模型数据双向绑定”的思想作为核心,因此在View和Model之间没有联系,通过ViewModel进行交互,而且Model和ViewModel之间的交互是双向的,因此视图的数据的变化会同时修改数据源,而数据源数据的变化也会立即反应到View上。vue.js、angular都采用这种模式。参考资料:
http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html
相关文章推荐
- 几张图解释mvc,mvp和mvvm的区别
- ASP.NET小结之MVC, MVP, MVVM比较以及区别(一)
- mvp,mvc和mvvm的区别
- MVC,MVP 和 MVVM的图示区别
- 浅谈MVC,MVP,MVVM区别与联系
- 浅谈开发中的MVVM模式及与MVP和MVC的区别
- MVC, MVP, MVVM比较以及区别
- MVC、MVP的区别和MVVM设计模式及实例
- MVC和MVP和MVVM的区别
- Android开发模式之MVC,MVP和MVVM的简单介绍与区别
- MVC,MVP,MVVM区别联系
- Android之MVP与MVC、MVVM的区别
- ASP.NET小结之MVC, MVP, MVVM比较以及区别(二)
- Android中MVC,MVP,MVVM的区别
- js架构设计模式——MVC,MVP 和 MVVM 的图示及简单明了的区别说明
- MVC,MVP 和 MVVM 的图示区别
- 第四十五课:MVC,MVP,MVVM的区别
- MVC,MVP和MVVM区别
- MVC、MVP和MVVM的区别
- MVC, MVP, MVVM比较以及区别-Android