无侵入、超容易使用的MVP库
程序员文章站
2022-05-12 20:23:51
...
目录
目的
无侵入MVP库,不干扰当前项目的逻辑
优化Model View Presenter之间可阅读性
超低学习成本,拿上手就会用
底层框架解析
- 定义BaseMvpActivity/BaseMvpFragment,实现:
- 通过注解反射方法获取Presenter对象,免去new的过程
- 绑定Presenter生命周期,防止内存泄露
- 定义BasePresneter/BaseView,实现:
- p中直接取到V对象,免去new的过程
- 增加代码严谨性,在编写代码过程中就能发现问题
- 声明注解@MvpPreImpl
- 核心
- 通过注解的方式获取P对象,极度的简化了代码,
- 同时,固定P的位置,增加了代码的阅读性
目录结构图
案例 - 使用方法
案例方法下载Demo查看更清楚
在这贴出BaseActivity / MainActivity(使用了MVP) / SecondActivity(未使用MVP)的部分代码,提前了解下该套MVP库怎么达到无侵入、易理解、超容易使用
BaseActivity
public abstract class BaseActivity<V extends BaseView, P extends BasePresenter> extends BaseMvpActivity<V, P> {
/* 自定义自己熟悉的BaseActivity抽象方法 */
/* ....other code.... */
}
MainActivity
@MvpPreImpl(TestPreImpl.class)
public class MainActivity extends BaseActivity<TestContract.IView, TestContract.IPresenter> implements TestContract.IView {
/*
如果需要使用MVP模式,套用这三步
标注 ---> @MvpPreImpl(PreImpl.class)
申明 ---> BaseActivity(V,P)
实现 ---> implements IView
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getPre().apiGetUserInfo("id"); //不需要New Presenter,直接getPre()即可 **简化代码**
}
/* ....other code.... */
}
SecondActivity
public class SecondActivity extends BaseActivity {
/*
有些界面不需要使用MVP的模式,不标注@MvpPreImpl()即可,不影响其它任何操作
这样
界面清晰明了,没有任何冗余的代码
*/
/* ....other code.... */
}
最后贴出案例目录结构图,通过笔者眼中的MVP,助你理解出自己的一份MVP架构
End.
发布于CSDN
上一篇: 做网赚高收入的三类人小结
下一篇: 新手站长如何确定自己的网赚方向
推荐阅读