Android MVP模式中,单个Activity/Fragment如何对应多个VP
写在前面
貌似现在的主流已经是MVVM模式了,但是作为Android小白,还是决定从MVP开始学习。
通常情况下,或者说作为一个还不算坏的设计,一个Activity/Fragment应该对应一个业务(一套MVP接口及实现)。但是往往由于种种原因,很难保证Activity/Fragment不会对应多个业务。没准明天产品经理(对于程序员来说这属于不可抗力)就会告诉你,他们打算把登录和注册放在一个Fragment上。
通常的MVP封装
通常我们在使用MVP模式时,都会进行一些简单的封装,尽可能的简化业务层的代码体量。(我一般叫它懒人Activity)
public abstract class LazyActivity<P extends IPresenter> extends BaseActivity {
protected P mPresenter;
protected abstract P createPresenter();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPresenter = createPresenter();
if (mPresenter == null) {
throw new NullPointerException("Presenter is null! Do you return null in createPresenter()?");
}
mPresenter.attachView