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