简介
truck项目的github地址:https://github.com/hookYuan/Truck
Android开发上的设计模式也是变了好多次,但是在近两年提的最多的还是mvp设计模式和mvvm设计模式(mvc很少有人推荐,
一般只是用作对比)。对于mvp和mvvm我不想评论他们的好坏,我觉得用设计模式的好处就是可以实现解耦和提高代码的可读性。由于
我近一年代码风格主要采用mvp设计模式,所以我再框架中集成了mvp的快速实现。
mvp主要是针对Acitvity和fragment的代码做的简单封装。基本设计思想是通过MVPActivity建立Activity和Presenter的一对一对应
关系,然后在presenter中可以调用Activity中的代码,也可以在Presenter中操作Moudle中的代码。
示例
MVPActivity中添加Presenter的泛型,然后可以通过getP()方法获取Presenter实例,具体使用方法如下:
public class TestActivity extends MVPActivity<PTest> {
@Override
protected void initData(Bundle savedInstanceState) {
getP().getPersonList();
}
@Override
public int getLayoutId() {
return R.layout.activity_test;
}
}
XPresenter中添加Activity的泛型,然后可以通过getV()方法获取Activity的实例,具体使用方法如下:
public class PTest extends XPresenter<TestActivity> {
public void getPersonList() {
//TOTO 其他操作
}
}
MVPFragment和MVPActivity有相同的用法。MVP的内部实现主要是通过反射泛型动态生成Presenter实例。
快速实现:
尽管这样的方式实现MVP的模式已经十分的方便了,但是如果你一直是一个人开发,平时不怎么用设计模式,你还是会觉得为什么要这么麻烦?代码放到Activity中不是更快捷吗?答案是肯定的,是的,确实你的方式更快。但是你没有考虑过让数据和界面解耦吗?这样你费了九牛二虎之力搭建的界面,和费了九牛三虎之力写的逻辑代码都能实现单独的复用。从长远来看,这样不是更方便吗。为了更快的方式实现以上mvp的设计模式实现,大家可以采用采用MVPActivity模板。当你创建的Activity的时候,一键自动生成MVP风格代码。具体实现如下:
- 导入MVPActivity模板。模板的位置在truck项目下的template文件夹下,找到MVPActivity模板后,打开Android studio的安装目录:......\Android Studio\plugins\android\lib\templates\activities。找到activities文件夹后,复制放入我们的MVPActivity模板即可,重启Android studio。
- 创建MVPActivity模板。创建MVPActivity和你平时创建Activity的方式一样,只是这里在Activity的创建列表中会多一项MVPActivity模板,选择MVPActiviyt模板即可。
- 预填参数。这时候你见到的界面应该是如下图,这里的FunctionName即你需要创建的Activity名称。module name,为了给代码结构模块化分类。例如创建Activity为user模块,只需填入user即可。创建MVPActivity会同时创建一个与之对应的Presenter.这样你就可以愉快地写MVP风格代码了。
最后附上truck快速开发交流qq群:698442320