Android 系统架构——MVP模式、MVC模式和MVVM模式

https://rainmonth.github.io/posts/A181025.html

Android中MVP模式、MVC模式

模式简介

MVC

Model-View-Controller简称,将数据模型(数据的定义及相关操作)、界面显示(接受用户的操作)与业务逻辑(接受界面操作并控制操作数据)分离的方式组织代码;

MVP

Model-View-Presenter简称,将MVC中的C层采用P层来换, 该模式下,M层和V层不再像MVC中的那样,他们不发生联系,沟通都是通过P层来实现的。

通信方式

MVC

  • View层接受到用户交互请求;
  • View层将请求传递给Controller层;
  • Controller层操作Model层进行数据更新;
  • 更新之后,Model层通知View层做相应的变化
  • View层更新界面

MVP

  • View接受用户的请求(如用户输入用户名密码进行登录)
  • View将请求发送至对应的Presenter(如UserPresenter)
  • Presenter通多Model获取数据的变化信息(如通过网络查询或本地数据库查询)
  • Model通知Presenter数据发生了改变(如登录成功,登录失败等)
  • Presenter将数据的改变反应在View上(对不同的改变,通知View层作不同的处理)

进化历史

MVC->MVP,这种改变的原因主要就是MVC中,Model不依赖于View,但View依赖于Model,V层可以直接访问M层,不可避免的V层就会包含数据逻辑处理,这样当V层在某个需求变化下需要更改时,就会变的麻烦(需要考虑View 层之前包含的那部分逻辑),于是MVP就产生了,他阻断了Model和View之间的直接通信,二者要联系起来必须都依赖于Presenter,即MP间可上相交互,PV间也可双向交互。

发现美团的一篇讲解MVVM模式的文章:

MVVM

  • Model

  • View

  • ViewModel,唯一的职责就是管理用来更新UI的数据

ViewModel

LiveData

AndroidDataBinding