架 c0b3 构模式:MVC,MVP&MVVM
2017-06-05 09:55
183 查看
复杂的软件需要清晰合理的架构,便于开发和后期维护。这就离不开架构模式。
View 视图:用户界面
Controller 控制器:业务逻辑
Model 模型:数据保存
![](https://img-blog.csdn.net/20170605095704232?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzEyMzE5NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
所有的通信都是单向的。
通信流程一般为:用户操作->V->C->M->V
用户也可以直接向controller传递指令。
实际上,在后端开发中,M和V是相互独立的,并不能直接通信,必须通过controller,如下图
![](https://img-blog.csdn.net/20170605100713378?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzEyMzE5NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
MVP 模式将 Controller 改名为 Presenter(呈现),同时改变了通信方向。
改为Presenter目的是完全切断View跟Model之间的联系,由Presenter充当桥梁,做到View-Model之间通信的完全隔离。
![](https://img-blog.csdn.net/20170605101049251?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzEyMzE5NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
所有的通信都是双向的。
presenter非常厚,所有的逻辑部署都在这。而view非常薄,不部署任何业务逻辑。
在结构上,MVVM与MVP类似,只是将presenter改为viewmodel。在思想上,MVVM将“数据模型数据双向绑定”的思想作为核心。
MVVM模式也可以看做,在MVC/MVP的基础上,将controller/presenter的部分业务逻辑分担到view。如图:
![](https://img-blog.csdn.net/20170605103032234?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzEyMzE5NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
JS框架中的Angular、Vue和Ember就是采用了MVVP模式。
参考文章:
- http://www.cnblogs.com/guwei4037/p/5591183.html
- http://www.jianshu.com/p/f4faa720f00d
- http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html
MVC
MVC(Model-View-Controller):最为直观的架构模式。他将软件分为三个部分:View 视图:用户界面
Controller 控制器:业务逻辑
Model 模型:数据保存
所有的通信都是单向的。
通信流程一般为:用户操作->V->C->M->V
用户也可以直接向controller传递指令。
实际上,在后端开发中,M和V是相互独立的,并不能直接通信,必须通过controller,如下图
MVP
MVP(Model-View-Presenter)MVP 模式将 Controller 改名为 Presenter(呈现),同时改变了通信方向。
改为Presenter目的是完全切断View跟Model之间的联系,由Presenter充当桥梁,做到View-Model之间通信的完全隔离。
所有的通信都是双向的。
presenter非常厚,所有的逻辑部署都在这。而view非常薄,不部署任何业务逻辑。
MVVM
MVVM(Model-View-ViewModel)在结构上,MVVM与MVP类似,只是将presenter改为viewmodel。在思想上,MVVM将“数据模型数据双向绑定”的思想作为核心。
MVVM模式也可以看做,在MVC/MVP的基础上,将controller/presenter的部分业务逻辑分担到view。如图:
JS框架中的Angular、Vue和Ember就是采用了MVVP模式。
参考文章:
- http://www.cnblogs.com/guwei4037/p/5591183.html
- http://www.jianshu.com/p/f4faa720f00d
- http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html
相关文章推荐
- 开发模式总结:MVC、MVP&MVVM
- Android MVC MVP MVVM 模式
- [iOS][转]iOS 架构模式 - 简述 MVC, MVP, MVVM 和 VIPER (译)
- iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构
- MVC->MVP->MVVM(未完)
- iOS架构模式-揭秘MVC,MVP,MVVM和VIPER
- iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构
- iOS-【转载】架构模式 - 简述 MVC, MVP, MVVM 和 VIPER
- 理解MVC,MVP和MVVM设计模式
- MVC,MVP 和 MVVM 模式如何选择?
- Android开发模式之MVC,MVP和MVVM的简单介绍与区别
- MVC/MVP/MVVM等模式的基本概念
- 本地MVP模式,不用MVC、MVP、MVVM,也能分离业务和UI
- iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构
- Android MVC,MVP,MVVM模式入门——重构登陆注册功能
- android设计模式(MVC MVP MVVM)
- 浅谈Android开发中的MVVM模式及与MVP和MVC的区别
- 【设计模式】MVC,MVP 和 MVVM 的区别
- 理解MVC,MVP和MVVM设计模式
- MVC,MVP 和 MVVM 的图示及mvp设计模式架构设计图