谈谈对MVC、MVP和MVVM的理解

刚出来工作的时候维护过一个老系统,该系统是用微软的ASP(Active Server Pages 动态服务器页面)写的。每一个页面都是一个ASP文件,每一个一个ASP文件中又同时包含了HTML、CSS、Java Script、VB Script代码,把这么多代码糅合在一起,可以想象一下如果一个这样的页面包含复杂的业务逻辑,每当要对系统进行维护或增加新功能的时候那个酸爽~

像上面这种把界面、业务逻辑和数据模型都整合在一起的做法,从软件的设计和可维护性方面看都是极不可取的。为了解决上述问题就发展出了各种MV*框架模式(MV*理论本身是一种模式,但它的各种实现又叫MV*框架),它是通过解决M和V的耦合问题来实现界面分离。

  • MVC:Model-View-Controller
  • MVP:Model-View-Presenter
  • MVVM:Model-View-ViewModel

总结:可以从上面的全称可以看出无论MVC、MVP和MVVM都是围绕着Model和View,都是为了解决Model和View的耦合问题,只是实现的思想不一样而已。

MVC

MVC把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),关系如下图所示:

模型(Model):数据库相关的操作、文件的访问和数据结构等。

视图(View):专注于显示,如Web前端(HTML/CSS/Java Script)

控制器(Controller):连接模型和视图,如把视图的请求发送给模型或把数据返回给视图等

MVC只是一种框架模式,针对不同的平台环境的实现方式会有些区别:

Web MVC

经典的Web MVC模式,实现的框架有ASP.Net MVC/Spring MVC 等,在Web MVC中Model的数据通过Controller返回给View。

桌面UI MVC

经典实现有PureMVC,PureMVC 是在基于MVC模式建立的一个轻量级的应用框架。它的Model与View的交互是通过观察者模式实现的,当Model有变化要通知View的时候Model把消息发送给通知分发中心,然后通知分发中心把消息发送到View。

总结:

MVC的实现了视图和模型的分离,避免了视图和模型糅合在一起,当视图改变的时候只要业务逻辑没变不需要改变模型;但是它有一个缺点缺点是因为MVC中的控制器并不能直接更新视图,所以MVC并不能实现视图和模型的完全分离,视图依然依赖模型的数据(数据结构)来显示,也就是说视图依赖模型。

MVP

MVP是针对MVC的缺点而进行了改进,它把软件系统分为三个基本部分:模型(Model)、视图(View)和展示器(Presenter),关系如下图所示:

模型(Model):数据库相关的操作、文件的访问和数据结构等。

视图(View):专注于显示,如Web前端(HTML/CSS/Java Script)

展示器(Presenter):连接模型和视图,处理视图的请求并根据模型更新视图。

总结:

MVP用展示器代替了控制器,而展示器是可以直接更新视图,所以MVP中展示器可以处理视图的请求并递送到模型又可以根据模型的变化更新视图,实现了视图和模型的完全分离。

MVVM

MVVM是MVP更进一步的发展,把软件系统分为三个基本部分:模型(Model)、视图(View)和视图模型(ViewModel),关系如下图所示:

模型(Model):数据库相关的操作、文件的访问和数据结构等。

视图(View):专注于显示,如Web前端(HTML/CSS/Java Script)

视图模型(ViewModel):连接模型和视图,视图模型和视图是双休绑定的。

总结:

MVVM用视图模型代替了MVP中的展示器,视图模型和视图实现了双向绑定,当视图发生变化的时候视图模型也会发生改变,当视图模型变化的时候视图也随之变化。

MVC/MVP/MVVM都是根据不同的应用需求和应用环境逐步发展而来的,它们都有各自优缺点和适用环境。比如Web开发中因为要跨越网络通讯,如果使用MVP或者MVVM来实现代价是巨大的,因为目前来说网络数据很珍贵的资源。

转载请注明出处:http://www.cnblogs.com/keitsi/p/5764785.html

时间: 2024-10-10 09:23:09

谈谈对MVC、MVP和MVVM的理解的相关文章

MVC, MVP, MVVM比较以及区别

MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下对于这三种模式思想的理解,以及它们的区别.欢迎各位高手拍砖. 阅读目录: 一. MVC, MVP, MVVM诞生的需求? 二. 一段典型的耦合代码 三. MVC模式 3.1 主动MVC 3.2 被动MVC 3.3 Web应用中的MVC框架 3.4 MVC总结 一,MVC, MVP, MVVM诞生的需

【转】对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比较以及区别(上)

原文:MVC, MVP, MVVM比较以及区别(上) MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下对于这三种模式思想的理解,以及它们的区别.欢迎各位高手拍砖. 阅读目录: 一. MVC, MVP, MVVM诞生的需求? 二. 一段典型的耦合代码 三. MVC模式 3.1 主动MVC 3.2 被动MVC 3.3 Web应用中的MVC框架 3.4

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 的图示 引用地址(http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html)

分类: 开发者手册 MVC,MVP 和 MVVM 的图示 作者: 阮一峰 日期: 2015年2月 1日 复杂的软件必须有清晰合理的架构,否则无法开发和维护. MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了. 昨天晚上,我读了<Scaling Isomorphic Javascript Code>,突然意识到,它们的区别非常简单.我用几段话,就可以说清. (题图:

MVC、MVP及MVVM之间的关系

介绍 写这篇随笔完全是为了加深自己的印象,毕竟写比看能获得得更多,另外本人对这三种模式的认识还是浅薄的,有待在以后的工作学习中有更深入的理解,因此不免会有误解,这里推荐大家阅读廖雪峰关于MVVM的介绍,以及阮一峰的MVC,MVP 和 MVVM的图示及谈谈MVC模式,相信您会有更深刻的理解. 概要 MVC.MVP及MVVM都是一种架构模式,为了解决图形界面应用程序复杂性管理问题而产生的应用架构模式. 发展历程 MVC模式概要 1.即Model.View.Controller即模型.视图.控制器.

Android App的设计架构:MVC,MVP,MVVM与架构经验谈

来源: Android App的设计架构:MVC,MVP,MVVM与架构经验谈 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于App的架构如何设计: 我的App需要应用这些设计架构吗? MVC,MVP等架构讲的是什么?区别是什么? 本文就来带你分析一下这几个架构的特性,优缺点,以及App架构设计中应该注意的问题. 1.架构设计的目的 通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.这样做的好处是使得程序在开发的过程中,开发人员

MVC,MVP,MVVM

复杂的软件必须有清晰合理的架构,否则无法开发和维护. MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了. 昨天晚上,我读了<Scaling Isomorphic Javascript Code>,突然意识到,它们的区别非常简单.我用几段话,就可以说清. (题图:摄于瓦伦西亚,西班牙,2014年8月) 一.MVC MVC模式的意思是,软件可以分成三个部分. 视图(V

MVC,MVP 和 MVVM 的图示

MVC,MVP 和 MVVM 的图示 作者: 阮一峰 日期: 2015年2月 1日 复杂的软件必须有清晰合理的架构,否则无法开发和维护. MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了. 昨天晚上,我读了<Scaling Isomorphic Javascript Code>,突然意识到,它们的区别非常简单.我用几段话,就可以说清. (题图:摄于瓦伦西亚,西班牙