MVP模式初识

MVP模式初识

Model层:数据,请求数据的逻辑。
View层:Activity或者Fragment,直接与用户交互和显示数据。
Presenter层:中间层,实现Module层和View层的解耦。

MVP常有,使用不常用。之前项目中有用到,最近又接触到,索性抽取了基本模型出来,下面是简单的代码体现。

/*
View 层。
1.Activity或者Fragment来实现定义好的V_INTERFACE
2.声明P_INTERFACE接口,new实现类presenter,并查询数据
3.处理查询成功或失败的逻辑
*/

interface V_INTERFACE {

    void onFailure();

    void onSuccess(Object obj);
}

class YourActivity implements V_INTERFACE {

    //声明P_INTERFACE接口,new实现类
    P_INTERFACE presenter = new P_IMPL(this);

    //利用presenter查询数据
    protected void onCreate(Bundle savedInstanceState) {

        presenter.query(89757, "username");
    }

    public void onFailure() {
        //查询失败的逻辑
    }

    public void onSuccess(Object obj) {
        //请求成功拿到数据后的逻辑
        //显示到组件上
    }
}

/**
 * Presenter层。
 * 1.声明V_INTERFACE,在构造方法中拿到其实现类也就是Activity的引用
 * 2.声明M_INTERFACE,new其实现类module,在自己的查询方法中利用module查询数据
 * 3.处理回调。成功后调用view的onSuccess,失败onFailure
 */
interface P_INTERFACE {
    void query(Object... args);
}

class P_IMPL implements P_INTERFACE, M_INTERFACE.M_LISTENER {

    V_INTERFACE view;
    M_INTERFACE module;

    //构造方法接收V_INTERFACE
    public P_IMPL(V_INTERFACE view) {
        this.view = view;
        module = new M_IMPL();
    }

    @Override
    public void query(Object... args) {
        //查询,传入需要请求的参数
        module.query(this, 89757, "username");
    }

    @Override
    public void onSuccess(Object obj) {
        view.onSuccess("200_OK");
    }

    @Override
    public void onFailure() {
        view.onFailure();
    }
}

/**
 * Module层。
 * 1.定义回调接口,传入query方法中
 * 2.实现类query方法中去请求数据,
 * 3.成功调用接口的onSuccess,失败onFailure
 */
interface M_INTERFACE {

    void query(M_LISTENER listener, Object... args);

    //监听的回调接口
    interface M_LISTENER {

        void onSuccess(Object obj);

        void onFailure();
    }
}

class M_IMPL implements M_INTERFACE {

    @Override
    public void query(M_LISTENER listener, Object... args) {

        boolean result = false;

        //真正处理请求数据的逻辑
        if (result) {//请求成功
            listener.onSuccess("200_OK");
        } else {
            listener.onFailure();
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值