mvp架构中v(view)负责页面显示,p(presenter)作为一个中间商,负责连接v与m(model),m负责实际数据操作
搭建思路:
v通过p去执行m操作,m在将数据返回到p,让p回调给m
操作步骤:
1.以一个网络请求为例子说明下主要文件结构:
api:网络请求api, baseactivity:activity的父类,basepresenter:子presenter的父类,baseview:子view的父类,loginbean:网络请求解析bean,modelutils:工具类,执行网络请求,retrofitutils:框架初始化,urls:地址,model2presenterListener:回调接口,model,presenter,ui,分别代表m,p,v层,其中impl是m和p层的具体实现
2.创建一个baseactivity(basefragment同理),一个baseview,一个basepresenter,作为一个v和p的父类,baseview上主要有包括方法showdialog(在执行一个功能时可能会需要弹窗),hidedialog(在执行完一个功能时可能需要关闭一个弹窗,往往和showdialog成对出现),showerror(执行一个功能时错误回调),basepresenter上主要有包括方法attachview(负责绑定对应view),detachview(解除绑定的view),basepresenter要持有baseview的子类负责绑定具体的v,baseactivity上有basepresenter的对象,需要去调用basepresenter的方法,在创建activity的时候,需要去初始化对应的presenter,再将presenter去绑定到本activity,如下:
3.把父类搭好后,开始实现具体子类,正常一个v对应一个p和一个m,
v层实现主要是创建一个p,去执行业务方法,如下以执行一个网络请求所示,在mainactivity中new一个mainpresenter,调用p.phonepasswordlogin是执行一个网络请求,结果会从phonepasswordloginfinish回调回来,如果请求失败会从showerror中回调回来,mainview就是负责具体业务回调接口,如下:
p层实现是作为一个中间商,它持有两个对象,一个是m,一个是v接口,它会执行由v调用的方法去调用m的具体实现方法,在由m返回的时候去回调给v接口,从而实现数据返回到对应的activity中,如下:
m层是负责实现具体逻辑,通过p调用方法执行后回调结构给p,如下:
总体方式就是这样.
最后附上demo地址: