这是我参与「第四届青训营 」笔记创作活动的第3天。
背景
本次项目规模较大,如果不使用架构将会导致项目臃肿,难以维护。为了解决这个问题,我们决定使用MVP架构来搭建项目,从而提高团队的研发效率。
MVP模式
MVP,全称 Model-View-Presenter,即数据层-UI显示层-逻辑处理层。MVP是基于MVC的基础发展而来的。
各层职责
MVP模式将应用分为三层:
View层 - UI显示层
view 层主要负责:
- 提供UI交互
- 在Presenter的控制下修改UI。
- 将业务事件交由Presenter处理。 注意. View层不存储数据,不与Model层交互。
Presenter层 - 逻辑处理层
Presenter 层主要负责:
- 对UI的各种业务事件进行相应处理。也许是与Model层交互,也许自己进行一些计算,也许控制后台Service
- 对各种事件进行响应,修改UI。
- 临时存储页面相关数据。 注意. Presenter内不出现View引用。
Model - 数据层
Model层主要负责:
- 从网络,数据库,文件,第三方等数据源读写数据。
- 对外部的数据类型进行解析转换为APP内部数据交由上层处理。
- 对数据的临时存储,管理,协调上层数据请求。
可以看出Presenter层相当于协调者,是模型与视图之间的桥梁,将模型与视图分离开来。
优点:
-
分离了视图逻辑和业务逻辑,降低了耦合。
-
视图逻辑和业务逻辑分别抽象到了View和Presenter的接口中去,提高代码的可阅读性。
-
Presenter被抽象成接口,可以有多种具体的实现,所以方便进行单元测试。
可能存在问题:
- 若业务剧增可能会造成接口类剧增,Presenter层的代码变得难以管理。