理解MVC,MVP和MVVM设计模式

转载 2016年08月29日 19:59:42

原文链接:http://www.dotnet-tricks.com/Tutorial/designpatterns/2FMM060314-Understanding-MVC,-MVP-and-MVVM-Design-Patterns.html


有3个非常受欢迎的MV-*系列设计模式:MVC,MVP,MVVM。他们被广泛应用于不多种结束。这篇文章我回阐述我自己对这3个设计模式的看法。


MVC模式:

MVC即Model-VIew-Controller。他是1970年代被引入到软件设计大众的。MVC模式致力于关注点的切分,这意味着model和controller的逻辑是不与用户界面(View)挂钩的。因此,维护和测试程序变得更加简单容易。

MVC设计模式将应用程序分离为3个主要的方面:Model,View和Controller


01.Model

Model代表了描述业务路逻辑,业务模型、数据操作、数据模型的一系列类的集合。这层也定义了数据修改和操作的业务规则。

02.View

View代表了UI组件,像CSS,JQuery,html等。他只负责展示从controller接收到的数据。也就是把model转化成UI。

03.Controller

Controll负责处理流入的请求。它通过View来接受用户的输入,之后利用Model来处理用户的数据,最后把结果返回给View。Controll就是View和Model之间的一个协调者。


今天,这个设计模式被很多热门框架所使用,比如Ruby on Rails,Spring Framework,Apple IOS Development and ASP.NET MVC。


MVP模式:

这个模式把Presenter换成Controller就非常和MVC相像了。这个设计模式把应用程序分成了3个主要方面:Model、View和Presenter。


01.Model

Model层代表了描述业务逻辑和数据的一系列类的集合。它也定义了数据修改和操作的业务规则。

02.View

View代表了UI组件,像CSS,JQuery,html等。他只负责展示从Presenter接收到的数据。也就是把模型(译者注:非Modle层模型)转化成UI。

03.Presenter

Presenter负责处理View背后所有的UI事件。它通过View接收用户输入,之后利用Model来处理用户的数据,最后把结果返回给View。与View和Controller不同,View和Presenter之间是完全解耦的,他们通过接口来交互。另外,presenter不像controller处理进入的请求。


这个模式被普遍的引用于ASP.NET Web Forms 应用程序。并且也应用于windows form。


MVP模式关键点:

01.用户和View交互。

02.View和Presenter是一对一关系。意味着一个Presenter只映射一个View。

03.View持有Presenter的引用(译者注:应该是通过接口交互,并不直接引用Presenter),但是View不持有Model的引用(译者注:即使接口,也不会)。

04.在View和Presenter之间可以双向交互。


MVVM模式:

MVVM即Model-View-View Model。这个模式提供对View和View Model的双向数据绑定。这使得View Model的状态改变可以自动传递给View。典型的情况是,View Model通过使用obsever模式(观察者模式)来将View Model的变化通知给model。


01.Model

Model层代表了描述业务逻辑和数据的一系列类的集合。它也定义了数据修改和操作的业务规则。

02.View

View代表了UI组件,像CSS,JQuery,html等。他只负责展示从Presenter接收到的数据。也就是把模型转化成UI。

03.View Model

View Model负责暴漏方法,命令,其他属性来操作VIew的状态,组装model作为View动作的结果,并且触发view自己的事件。


这个模式被广泛应用于WPF,Silverlight,Caliburn,nRoute 等。


MVVM模式关键点:

01.用户和View交互。

02.View和ViewModel是多对一关系。意味着一个ViewModel只映射多个View。

03.View持有ViewModel的引用,但是ViewModel没有任何View的信息。

04.View 和ViewModel之间有双向数据绑定关系。

理解MVC,MVP和MVVM设计模式

原文链接:http://www.dotnet-tricks.com/Tutorial/designpatterns/2FMM060314-Understanding-MVC,-MVP-and-MVVM...
  • pkxiuluo01
  • pkxiuluo01
  • 2015年10月24日 14:36
  • 23822

MVC,MVP,MVVM设计模式的比较

MVC,MVP,MVVM设计模式的比较
  • axi295309066
  • axi295309066
  • 2016年09月20日 15:07
  • 1824

对MVC、MVP、MVVM的理解

最近看了一堆js框架的文档,有点乱,想分门别类整理一下,但是首先需要搞清楚这些框架里面经常谈论的MV*之类的概念。MVC的概念很早就知道,现在发现还有MVP、MVVM,那么这些设计模式有什么区别呢?谈...
  • napolunyishi
  • napolunyishi
  • 2014年04月01日 17:50
  • 23182

MVC与MVVM设计模式理解

MVC与MVVM设计模式理解MVC设计模式MVC是一种架构模式,M表示Model,V表示视图View,C表示控制器Controller:...
  • YanceChen2013
  • YanceChen2013
  • 2016年06月24日 22:41
  • 6849

浅谈开发中的MVVM模式及与MVP和MVC的区别

我记得前段时间分享了一篇文章《 浅谈Andorid开发中的MVP模式》,反响不错,为了进一步介绍MVVM模式,还提前分享了实现Android中MVVM模式的一个关键技术的文章《Android 数据绑定...
  • zzqhappy025
  • zzqhappy025
  • 2017年02月10日 15:53
  • 1435

MVC、MVP、MVVM深入理解与使用

对现在的Android架构与技术的选择进行了重新的思考,同时总结了对MVC、MVP、MVVM这三个典型架构深入的理解及它们的应用方法,给出了应用的示例代码。...
  • tyhj_sf
  • tyhj_sf
  • 2016年07月31日 11:10
  • 724

【框架篇】mvc、mvp、mvvm使用关系总结

MVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的...
  • hudan2714
  • hudan2714
  • 2016年03月27日 10:04
  • 11093

android中MVC,MVP和MVVM三种模式详解析

我们都知道,android本身就采用了MVC模式,model层数据源层我们就不说了,至于view层即通过xml来体现,而 controller层的角色一般是由activity来担当的。虽然我们项目用到...
  • u013320868
  • u013320868
  • 2016年08月11日 11:36
  • 842

教你认清MVC,MVP和MVVM三种模式

相信大家对MVC,MVP和MVVM都不陌生,作为三个最耳熟能详的Android框架,它们的应用可以是非常广泛的,但是对于一些新手来说,可能对于区分它们三个都有困难,更别说在实际的项目中应用了,有些时候...
  • Greathfs
  • Greathfs
  • 2016年07月24日 23:10
  • 21950

iOS中MVC、MVVM、MVP几种模式小结

一、MVC模式的优缺点  优点: 1、开发人员可以只关注整个结构中的其中某一层; 2、可以很容易的用新的实现来替换原有层次的实现; 3、可以降低层与层之间的依赖; 4、有利于标准化; 5、...
  • li_shuang_ls
  • li_shuang_ls
  • 2015年12月04日 16:38
  • 1960
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:理解MVC,MVP和MVVM设计模式
举报原因:
原因补充:

(最多只允许输入30个字)