MVP架构学习笔记|青训营笔记

220 阅读2分钟

MVP架构学习笔记|青训营笔记

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

前言

一个 App 的架构需要处理两个任务:

  1. 更新 Model —— 处理View收到的用户请求
  2. 更新View —— 将Model的数据表现到View上

简单来说就是为了将业务和视图的实现代码分离。

MVC = Model-View-Controller,MVP = Model-View-Presenter,MVVM = Model-View-ViewModel是三个最常用的架构模式。

MVP与MVC的区别

MVCMVP
Model业务逻辑和实体模型Model业务逻辑和实体模型
View对应于布局文件View对应Activity,负责View的绘制与用户交互
Controller对应Activity等Presenter负责完成View与Model的交互

Model,View与Presenter

  • Model负责管理业务数据逻辑,如网络请求、数据库处理

    Model = 数据 + 业务逻辑,它既保存程序的数据,也定义了处理该数据的逻辑,从数据的维度可细分为数据的定义、储存和获取

  • ViewActivity\Fragment 和 Layout XML 文件

    View负责接收用户的交互请求并展示数据信息给用户,展示的数据从Model中获取。

  • Presenter负责处理表现逻辑

    Presenter为Model与View之间的桥梁,用于控制程序的流程。


MVP架构

MVP三件套的关系图如下

MVP关系

MVP 之间是通过接口来通信的,各层都有各自的接口来实现相应功能。

其交互流程为:用户操作 View 层,产生了一个事件; Presenter 接收事件,并对其作出反应,请求 Model 层; Model 层作出处理后通知给 Presenter, Presenter 进而再通知到 View 层。

在实现细节上,View 和Presenter中间会定义一个协议接口 Contract,该接口将约定View与Presenter的交互逻辑。这样Activity将作为View的一部分只处理UI事务。


MVP的缺点

对View的操作都在Presenter中,所以View和Presenter的交互可能会过于频繁。Presenter与视图的绑定过于紧密,一旦视图改变,Presenter也要改变。