MVC MVVM和MVP三种设计模式之个人理解^_^

对于3种设计模式,本人最为熟悉的是MVC,使用最多的也是MVC模式。后来又了解到另外两种模式,不过并没有实际使用过。在网上看到对MVVM和MVP这两种模式的介绍以及与MVC之间的关系说明的文章有很多,这里就说一下自己对这三种模式的看法。

MVC模式:想必大多数对于这个模式并不陌生,因为最初使用的设计模式就是MVC模式。而且这个设计模式被很多热门框架所使用,比如Ruby on Rails,spring Framework,Apple iOS Development and ASP.NET MVC。MVC即Model-View-Controller。


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

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

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

它们之间的通信模式如下:


MVP模式:这个模式把P(Presenter)换成C(Controller)就和MVC很像了。MVP即Model-View-Presenter。

通信模式如下:


1. 各部分之间的通信,都是双向的。

2. View 与 Model 不发生联系,都通过 Presenter 传递。

3. View 不部署任何业务逻辑,称为"被动视图",即没有任何主动性,所有逻辑都部署在Presenter那里。

MVP模式关键点:

1.用户和View交互。

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

3.View持有Presenter的引用(个人猜测:应该是通过接口交互,并不直接引用Presenter),但是View不持有Model的引用(个人猜测:即使接口,也不会)。

MVVM模式:将Presenter换成ViewModel,基本上与MVP模式一致。唯一的区别是,它采用双向绑定:View的变动,自动反映在 ViewModel,反之亦然。



MVVM模式关键点:

1.用户和View交互。

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

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

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

猜你喜欢

转载自blog.csdn.net/lee_woxinyiran/article/details/80790581