MVC、MVP、MVVM

MVC的概念相信大家应该都已经不陌生了。简单说来,MVC分别是Model、View和Controller。Model负责数据和访问数据的方法,View负责展示,Controller负责业务逻辑。这样各司其职,各功能模块也就好分离和测试。

接触前端后,又有了许多新名词。包括MVP和MVVM。今天就来说下这个MVP和MVVM。

其实他们的区别很简单。先上一张图,然后再来一些文字说明。

首先明确下传统的MVC模式。这种模式下,用户和View交互,然后View将用户的操作传递给Controller,Controller根据业务逻辑对Model进行更新。而View以观察者方式来判断Model的变化,再来更新View自己。

优点:不同功能分层,利于功能的模块化。

缺点:由于Controller依赖于view,因此不易测试。

然后是MVP。在此模式下,C变为P,既由Controller变为Presenter。此时,View不是通过监听Model进行更新,而是Presenter根据Model的变化然后通过 View提供的接口来对View进行修改。

优点:功能集中于Presenter,因此便于测试。

缺点:可能导致Presenter过于庞大。

最后是MVVM。在此模式下,C变为ViewModel。此时,调用关系和MVP差不多,不同的是ViewModel中有一个专门的Binder用来负责数据的同步。这样即可以保证View和Model保持一致,也可以减少ViewModel的代码量。

优点:减少Controller大小,易维护。

缺点:引入过多,不适合小应用。

时间: 2024-08-03 09:14:45

MVC、MVP、MVVM的相关文章

MVC、MVP、MVVM模式对比总结

前言说明 在实战项目及学习中来总结一下Android端项目构架 包括MVC.MVP.MVVM,主要针对移动Android端 目录 1.构架基础 2.横向构架模型 3.纵向构架流程 4.代码例子 1. 构架基础 MVC构架 基础说明: 1.model模型,负责处理具体业务逻辑 2.view视图,负责显示结果,一般直接与用户交互 3.controller控制器,负责将view界面的请求转发给model处理并依次返回结果 工作流程: 1.用户在view界面进行操作 2.view界面发送请求给contr

【转】对MVC、MVP、MVVM的懂得

[转]对MVC.MVP.MVVM的懂得 转载地址:http://www.myexception.cn/vc-mfc/1612241.html 对MVC.MVP.MVVM的理解 最近看了一堆js框架的文档,有点乱,想分门别类整理一下,但是首先需要搞清楚这些框架里面经常谈论的MV*之类的概念.MVC的概念很早就知道,现在发现还有MVP.MVVM,那么这些设计模式有什么区别呢?谈一下自己的理解. 刚开始理解这些概念的时候认为这几种模式虽然都是要将view和model解耦,但是非此即彼,没有关系,一个应

MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js 概念摘录

转自:http://www.cnblogs.com/xishuai/p/mvc-mvp-mvvm-angularjs-knockoutjs-backbonejs-reactjs-emberjs-avalonjs.html MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是将 M 和 V 的实现代码分离,从而使同一个程序可以使用不同的表现形式. 交互方式(所有通信都是单向的): View 传送指令到 Contro

谈谈对MVC、MVP和MVVM的理解

刚出来工作的时候维护过一个老系统,该系统是用微软的ASP(Active Server Pages 动态服务器页面)写的.每一个页面都是一个ASP文件,每一个一个ASP文件中又同时包含了HTML.CSS.Java Script.VB Script代码,把这么多代码糅合在一起,可以想象一下如果一个这样的页面包含复杂的业务逻辑,每当要对系统进行维护或增加新功能的时候那个酸爽- 像上面这种把界面.业务逻辑和数据模型都整合在一起的做法,从软件的设计和可维护性方面看都是极不可取的.为了解决上述问题就发展出了

MVC、MVP、MVVM模式对比总结(2)横向构架模型

前言说明 在实战项目及学习中来总结一下Android端项目构架 包括MVC.MVP.MVVM,主要针对移动Android端 该篇只描述横向构架模型 目录 1.构架基础 2.横向构架模型 3.纵向构架流程 4.代码例子 2.横向构架模型 MVC构架 综合说明: 以manager作为controller层 activity/fragment(view)调用manager(controller)处理请求 manager(controller)调用NetHelp(model)处理业务逻辑 虚线代表返回结

从Script到Code Blocks、Code Behind到MVC、MVP、MVVM(转载)

http://www.cnblogs.com/indream/p/3602348.html 刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下就开讲了. 今天看到了大家在为MVVM knockout.js友(ji)好(lie)地交流,所以就整理下然后更扩展地分享. 主要目的也不是为了争论,毕竟只是正巧主题相近,原本的打算也就是一次技术分享并且记录下来. 那么

js架构设计模式——你对MVC、MVP、MVVM 三种组合模式分别有什么样的理解?

你对MVC.MVP.MVVM 三种组合模式分别有什么样的理解? MVC(Model-View-Controller)MVP(Model-View-Presenter)MVVM(Model-View-ViewModel)请大家谈一谈各自的理解吧,对比之下更能明确特征和适用的范围,菜鸟们畅所欲言,老鸟大牛们请多多指点! 2 条评论 按投票排序 按时间排序 10 个回答 王韦恩卑鄙,我编程序,我约. 知乎用户.里德.jogen 等人赞同 只是一点浅见啊 折叠也活该... M-V- X 本质都是一样的

[转]MVC、MVP、MVVM

界面之下:还原真实的 MVC.MVP.MVVM 模式 [日期:2015-10-28] 来源:github.com/livoras  作者:戴嘉华 [字体:大 中 小] 前言 做客户端开发.前端开发对MVC.MVP.MVVM这些名词不了解也应该大致听过,都是为了解决图形界面应用程序复杂性管理问题而产生的应用架构模 式.网上很多文章关于这方面的讨论比较杂乱,各种MV*模式之间的区别分不清,甚至有些描述都是错误的.本文追根溯源,从最经典的Smalltalk- 80 MVC模式开始逐步还原图形界面之下最

MVC、MVP、MVVM模式对比总结(4)用户登录例子

前言说明 在实战项目及学习中来总结一下Android端项目构架 包括MVC.MVP.MVVM,主要针对移动Android端 该篇以Android平台用户登录为例子,用代码来描述构架模式 代码主要作理解,所以可能不完整,因为去掉一些精简方便说明 目录 1.构架基础 2.横向构架模型 3.纵向构架流程 4.用户登录例子 4. 用户登录例子 公共代码 NetHelper网络通信类 使用Retrofit+RxJava技术 NetHelper { private static String baseUrl

浅谈MVC、MVP、MVVM架构模式的区别和联系

浅谈MVC.MVP.MVVM架构模式的区别和联系 学习了:http://www.cnblogs.com/guwei4037/p/5591183.html http://blog.csdn.net/ttf1993/article/details/49405329 MVC: Model->View->Controller->Model MVP: View <--> Presenter <--> Model MVVM: View (ViewController)<