美文网首页
Android MVP模式

Android MVP模式

作者: 副业小侦探 | 来源:发表于2018-06-20 18:31 被阅读0次

前言

1. MVP模式

MVP:Model-View-Presenter ;MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。


mvp.png

简单点来说,MVP分离了view和model层,Presenter层充当了桥梁的角色,View层只负责更新界面即可,这里的View我们要明白只是一个viewinterface,它是视图的接口,这样我们在做单元测试的时候可以非常方便编写Presenter层代码。

  • 好处:
  1. 模型与视图完全分离,我们可以修改视图而不影响模型
  2. 可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部
  3. 我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
  4. 如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)
2. 使用方法
目录.png

实现一个简单的网络请求

- Contract
    interface Model extends BaseModel {
        Flowable<TestBean> postLogin();
    }
    interface View extends BaseView {
    }
    abstract class Presenter extends BasePresenter<Model, View> {
        public abstract void login();
    }
}
- Model
    @Override
    public Flowable<TestBean> postLogin() {
        return Api.getDefault().getListDict().compose(RxSchedulers.<BaseResponse<TestBean>>io_main()).compose(RxSchedulers.<TestBean>handleResult());
    }
}
- Presenter
    @Override
    public void login() {
        addDispose(mModel.postLogin().subscribeWith(new RxSubscriber<TestBean>(mContext, false) {
            @Override
            protected void _onNext(TestBean userBaseRespose) {
                Log.e(TAG, userBaseRespose.toString());
            }
            @Override
            protected void _onError(String message) {
                mView.showErrorTip(message);
Toast.makeText(mContext,message,Toast.LENGTH_SHORT).show();
            }
        }));
    }
}
- Activity
mPresenter.login();

相关文章

网友评论

      本文标题:Android MVP模式

      本文链接:https://www.haomeiwen.com/subject/ccxueftx.html