天天看点

浅谈安卓框架mvp

最近这几天面试遇到这个问题,所以认真研究了两天,在这里说下自己见解,若有问题,欢迎大家指出讨论。

mvp框架是mvc框架的进阶,

在mvc框架中:

m,也就是model,代表数据获取和操作层,譬如读取数据库,读取网络都是在这一层实现。

v,是View,也就是用户可视层,在这里指的是安卓中的xml布局文件。

c,控制器Controller,在mvc框架中,它代表的是activity,响应用户数据,将请求发给m层,从m层获取数 据之后,更新v层,是m跟v沟通的媒介

但是mvc有缺点,因为在mvc中,v只是单纯代表xml,而c却有着大量用户响应操作,比如获取请求还有从m层得到数据再到去更新v层,都在c中实现,而若是代码太多,会让的c层非常臃肿,以后不好修改。

因此在这个基础之上,为了将代码进一步分离,又提出mvp框架

m,是model,同样是数据操作层

v,这里注意,这里的v不代表xml布局文件了,而是代表activity

p,中介层,从v层获取响应事件,然后从m层得到数据操作结果,回调给v层,是m和v的媒介

mvp框架图如同下图所示,将数据操作层和展示层彻底分离,presenter只作为一个中介,

浅谈安卓框架mvp

我写了一个简单的mvp工程,欢迎大家指教

这个是m层,数据操作和获取,我在这里模拟去请求网络

浅谈安卓框架mvp

这个是p层,用来做v层和m层之间的连接

浅谈安卓框架mvp

这个是v层,用来展示界面

浅谈安卓框架mvp

若有问题,请大家一定要指出,谢谢!!!