浅谈Android Mvp模式开发及个人理解

MVP:Model View Present。

前言:抱着最起码的要求尽力去做好每一件事 ——秋不白

终于理解了MVP,给大伙分享下,大神勿喷,小白专用。第一次写博客好紧张,怎么样才能表现出经常写博客的样子,各位老铁。

* Model: 处理数据
* View : 显示数据(Activity或Fragment)
* Present: 连接Model层和View层
* Mvp 框架个人理解
*  1. 由View层发起请求(就是在View层里面 调用present.getData() 方法啦,说的这么高端)
*  2. 在present.getData()方法里面,调用Model.getData()去执行数据请求,(就是所谓的  由Present层传递请求给Model层)
*  3. 然后,present回传请求数据结果(成功就显示数据,失败就提示失败)

下面直接看代码

第一步,创建一个接口,具备两个功能,一个是请求数据,一个是回传数据

/**
 * 回调接口
 * Created by yinsxi on 2018/7/18.
 */

public interface MvpContact {
    interface Present{
        /**
         * 获取数据
         */
        void getData();
    }
    interface View{
        /**
         * 展示数据
         */
        void showData();

        /**
         * 展示错误数据
         */
        void showError();
    }
}

第二步

还是一个接口,用来请求数据时,失败或成功的回调

/**
 * 请求数据 回调
 * Created by yinsxi on 2018/7/18.
 */

public interface GetDataListenser {
    void onFailed();
    void onSuccess();
}

第三步

编写你的数据请求类,也就是Model层,处理数据的

/**
 * Created by yinsxi on 2018/7/18.
 */

public class MvpModel {
    public void getData(GetDataListenser listenser){

        /**
         * 具体执行业务代码
         * 此处省略一百行代码
         * */


        /**
         * 根据最后请求结果
         * 失败或成功回调
         */
        listenser.onFailed();
        listenser.onSuccess();

    }
}

第四步

编写Present层,用来传递请求数据,和回传数据

/**
 * Mvp 中的 Present层, 连接View层和Model层
 * 1. 传递数据请求
 * 2. 回传 数据请求结果及数据
 * Created by yinsxi on 2018/7/18.
 */

public class MvpPresent implements MvpContact.Present{
    MvpContact.View view;
    MvpModel model;
    public MvpPresent(MvpContact.View view) {
        this.view = view;
        model = new MvpModel();
    }

    /**
     * 中间层传递请求
     */
    @Override
    public void getData() {
        model.getData(new GetDataListenser() {
            @Override
            public void onFailed() {
                view.showError();
            }

            @Override
            public void onSuccess() {
                view.showData();
            }
        });
    }
}

到这里基本完成简易MVP框架了,看看Activity如何使用,相信你应该知道了

public class MainActivity extends AppCompatActivity implements MvpContact.View{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化 Mvp 中的Present层
        MvpPresent mvpPresent = new MvpPresent(this);
        //由View层发起请求
        mvpPresent.getData();
    }

    @Override
    public void showData() {

    }

    @Override
    public void showError() {

    }
}

最后仅个人理解,可能存在失误:

*     不必太过于在意是什么框架mvp mvc,框架再怎么变,也离不开,最根本的设计,就是封装。
*      一个数据请求当然是放到单独一个类里面去执行,作为activty只需要这个类回传结果,失败或成功。
*      当然了,遵循框架,有利于后期维护,一句话,写出机器能懂得代码很简单,写出人能看懂的代码就很难,这是我兄dei佑哥对我说的
*      这要是衍生出各种框架的原因。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值