Android MVP学习笔记

MVP很简单,敲一遍代码就会:

一, 怎么来理解MVP

M:model
V:View
P : Presenter
基本上介绍MVP的都会介绍每个字母代表什么。对于刚接触MVP的童鞋来说,其实从最简单的来理解就行了(深层次我也不理解 哈哈 ):
M:数据
V:主要是将Activity或Fragment视为View层 负责数据的展示
P : Presenter 业务逻辑的处理

二、代码:

看什么关系图啊,越看越晕,看代码最实际,代码敲一边不理解起码也能先用着:

首先我们需要BaseView和BasePresenter;

这里写图片描述

BaseView和BasePresenter是两个接口里面代码很简单:
这里写图片描述

这里写图片描述

下面我们设计业务场景:点击按钮在TextView上显示文字。。

  • Step1
    创建契约类MVPContact.class

    这里写图片描述

  • Step2
    创建MVPPresenter
public class MVPPresenter implements MVPContact.Presenter {
    private MVPContact.View mView;

    public MVPPresenter(MVPContact.View mView) {
        this.mView = mView;
        mView.setPresenter(this);
    }
    @Override
    public void get() {
        mView.showMessage("哈哈哈");
    }
    @Override
    public void start() {

    }

    @Override
    public void subscribe() {

    }

    @Override
    public void unsubscribe() {

    }
}
  • Step3
    创建Activity并实现MVPContact.View
public class MvpActivity extends Activity implements MVPContact.View{
    @BindView(R.id.btn_get)
    Button btnGet;
    @BindView(R.id.tv_show)
    TextView tvShow;
    private MVPContact.Presenter mPresenter;
    @Override
    public void setPresenter(MVPContact.Presenter presenter) {
        this.mPresenter = presenter;
    }

    @Override
    public void showMessage(String message) {
        tvShow.setText(message);
    }
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mvp);
        init();
    }

    private void init() {
        ButterKnife.bind(this);
        mPresenter = new MVPPresenter(this);
    }

    @OnClick({
            R.id.btn_get
    })
    public void click(View view){
        switch (view.getId()){
            case R.id.btn_get:
                mPresenter.get();
                break;
        }
    }
}

大功告成!

总结:

这是一个简单的DEMO,是不是觉得本来一句代码tv.setText()就搞定的问题,为什么弄的这么复杂?
我们多创建了Contact、BaseView、BasePresenter、MVPPresenter四个类。确实增加了代码量,但同时,我们将业务逻辑的处理都放在了Presenter中,Activity视作View层只负责数据的展示,提高了代码的可维护性。试想如果不是简单的一个功能,而是非常多的网络请求、读取数据库、计算等业务,我们可以在Presenter中很方便的去进行维护,而不是看着臃肿的Activity欲哭无泪。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值