MVP 架构 | 青训营笔记

165 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第3天。

背景

本次项目规模较大,如果不使用架构将会导致项目臃肿,难以维护。为了解决这个问题,我们决定使用MVP架构来搭建项目,从而提高团队的研发效率。

MVP模式

MVP,全称 Model-View-Presenter,即数据层-UI显示层-逻辑处理层。MVP是基于MVC的基础发展而来的。

各层职责

MVP模式将应用分为三层:

image.png

View层 - UI显示层

view 层主要负责:

  1. 提供UI交互
  2. 在Presenter的控制下修改UI。
  3. 将业务事件交由Presenter处理。 注意. View层不存储数据,不与Model层交互。

Presenter层 - 逻辑处理层

Presenter 层主要负责:

  1. 对UI的各种业务事件进行相应处理。也许是与Model层交互,也许自己进行一些计算,也许控制后台Service
  2. 对各种事件进行响应,修改UI。
  3. 临时存储页面相关数据。 注意. Presenter内不出现View引用。

Model - 数据层

Model层主要负责:

  1. 从网络,数据库,文件,第三方等数据源读写数据。
  2. 对外部的数据类型进行解析转换为APP内部数据交由上层处理。
  3. 对数据的临时存储,管理,协调上层数据请求。

可以看出Presenter层相当于协调者,是模型与视图之间的桥梁,将模型与视图分离开来。

优点:

  • 分离了视图逻辑和业务逻辑,降低了耦合。

  • 视图逻辑和业务逻辑分别抽象到了View和Presenter的接口中去,提高代码的可阅读性。

  • Presenter被抽象成接口,可以有多种具体的实现,所以方便进行单元测试。

可能存在问题:

  • 若业务剧增可能会造成接口类剧增,Presenter层的代码变得难以管理。