理解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...

理解MVC,MVP和MVVM设计模式

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

《Android源码设计模式》读书笔记 (25) 第25章 Android架构之MVC,MVP,MVVM

前言 在说MVC和MVP,MVVM架构之前,我们先得理清楚什么是框架模式,什么时设计模式. 框架模式:通常是对代码的重用,用来对软件的设计进行分工. 设计模式:通常是对设计的重用,是小技巧,对具体的问...

浅谈Android架构设计模式中MVC、MVP、MVVM

以下基于对三种模式已经熟悉所总结,不会介绍模式的基础概念,以下是自己结合其他人和自己实际开发中的经验对这些概念一些感悟。 Activity是V还是C 对于Activity属于V还是属于C这...
  • ourpush
  • ourpush
  • 2016年10月01日 22:16
  • 274

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

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

MVC/MVP/MVVM 三种设计模式 汇总

原文 :http://blog.csdn.net/hudan2714/article/details/50990359 MVC MVC全名是Model View C...

MVC、MVVM、MVP 框架设计模式浅析

传统模式下的开发 MVC MVVM 基于面向协议MVP的介绍 MVP实战开发 说在前面: 相信就算你是个iOS新手也应该听说过MVC的,MVC是构建iOS App的标准模板。随着时间的推移...

Web设计模式 之 - MVC vs. MVP vs. MVVM

了解MVVM模式之前,我们先来简单了解一下从MVC到MVVM的变迁。这个变迁是耦合从紧到松的变迁,是对依赖处理的进化,是应对变化技术的成熟。   MVC全名是Model View Controlle...
  • n0_No
  • n0_No
  • 2016年11月02日 10:50
  • 196

MVC,MVP 和 MVVM 的图示及mvp设计模式架构设计图

复杂的软件必须有清晰合理的架构,否则无法开发和维护。 MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。它本身很容易理解,但是要讲清楚,它与衍生的 MV...

MVVM与MVC设计模式

实际开发过程中,已经有很多地方要用到MVVM架构模式,而传统的MVC设计模式也随着开发的复杂性逐渐的被MVVM所取代,或许以后还会推出更好的设计模式,但不可否认的是,就目前来说,MVVM引领了这段潮流...
  • shiios
  • shiios
  • 2015年12月14日 23:55
  • 425
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:理解MVC,MVP和MVVM设计模式
举报原因:
原因补充:

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