Android在开发过程中演变出许多的设计模式,今天我们就在讲讲MVP设计模式
简介
MVP设计模式,全称Model(模型)- V(View)-P(Presenter)层,是MVC设计模式的一种变体(详情请见)。因为MVC设计模式有着缺陷,就是V层和C层再实际开发中的分割线不是很明确,容易造成activity层十分臃肿。所以产生了一种新的设计模式,就是MVP设计模式,MVP把Activity中的UI逻辑抽象成View接口,把业务逻辑抽象成Presenter接口,Model类还是原来的Model。
现在这样的话,Activity的工作的简单了,只用来响应生命周期,其他工作都丢到Presenter中去完成。从上图可以看出,Presenter是Model和View之间的桥梁,为了让结构变得更加简单,View并不能直接对Model进行操作,这也是MVP与MVC最大的不同之处。
详细介绍
- Model: 数据层. 负责与网络层和数据库层的逻辑交互.
- View: UI层. 显示数据, 并向Presenter报告用户行为.
- Presenter: 从Model拿数据, 应用到UI层, 管理UI的状态, 决定要显示什么, 响应用户的行为.
与MVC的区别
MVP:View: 对应于Activity,负责View的绘制以及与用户交互
Model: 依然是业务逻辑和实体模型
Presenter: 负责完成View于Model间的交互
View不直接与Model交互,而是通过与Presenter交互来与Model间接交互。
Presenter与View的交互是通过接口来进行的。
通常View与Presenter是一对一的,但复杂的View可能绑定多个Presenter来处理逻辑。
MVC:
View:对应于布局文件
Model:业务逻辑和实体模型
Controllor:对应于Activity
View可以与Model直接交互。Controller是基于行为的,并且可以被多个View共享,可以负责决定显示哪个View。
从MVC到MVP的一个转变,就是减少了Activity的职责,减轻了它的负担,简化了Activity中的代码和一些操作,将逻辑代码提取到了Presenter中进行处理,降低了其耦合度。