对于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之间有双向数据绑定关系。