听到一些童鞋抱怨MVP,所有搞了个辅助实现MVP的小东西,叫MvpFrame。还不了解MVP的先看《Google原味mvp实践》。主要的功能如下
开源地址是
https://github.com/wolearn/MvpFrame
可以把上面工程中的mvpframelib作为Android Lib引入,或者直接复制java文件也可以。我简单解释下还是我常用那个登陆的例子。先看目录结构。
在Application中调用
Mvp.getInstance().init(this);
规划好view和presenter的接口。
用一个契约类来定义需要的方法。之前有童鞋问我,这个接口写好烦,能不能不写。肯定不能。我能想到的理由有三点
可以支持Activity和Fragment,Activity继承MvpActivity,Fragment继承MvpFragment。
Presenter继承MvpPresenter实现即可。
数据的来源一般有三个:DB,NET,Cache。看个图
之前有童鞋说,业务过程很烦,要搞个UseCase文件,然后又要搞个Repository文件,最后搞个HttpLogin,因为登录本来就只是要跟服务端确认,前面2个文件基本都是透传。是不是一定要这么死板呢?当然不是,结构可以根据业务的复杂度做调整的。比如我这里登录就是直接让HttpLogin继承MvpModel, 直接跟P层交互。
如果你当前业务是只跟DB打交道,也可以让LoginDB继承MvpModel,然后在P层的泛型中确认类型即可。
默认通过以下API获取的唯一实例,传入为实例的class类型
Mvp.getInstance().getPresenter(); Mvp.getInstance().getModel(); Mvp.getInstance().getView();
getPresenter 和 getModel 的实例默认会创建,getView 要确定Activity或者Fragment已经创建,否则可能为null。
建议以文件的形式引入,方便依据工程业务做定制化。喜欢请帮忙戳喜欢,有问题欢迎评论。