Android中的MVP的简单介绍和使用

MVC、MVP、MVVM模式想必很多程序员都听说过,今天我简单介绍下MVP的使用。
并附上demo地址:
https://github.com/linqinen708/SimpleMvpDemo

想要了解MVP模式,首先需要了解MVC模式,因为MVP模式就是由MVC演化而来的。做过IOS开发的人应该不陌生,IOS的新建默认项目会自动使用MVC模式,并且还专门建立好了Model、View和Controller三个文件夹。而Android Studio的默认项目基本上没有任何模式,需要程序员自己来建立。在Android的开发中,最为经典并且简单的MVC模式,可以说是View控件本身自带的OnClickListener了(不知道这个比喻恰不恰当)。Controller就是整个Listener,而Model就是onClick的回调中的方法,这样一个简单的MVC模式就形成了。而如果我们通过封装,将这个Listener封装成一个单独的类,这样就可以大大降低Activity中的代码,也便于后期的维护。整个Activity就是一个View,被封装的Listener的类就是一个Presenter,onClick中的事件的处理再单独封装成一个Model类,就是一个简单的MVP类了。想要使用Model中的逻辑或者数据,直接使用Presenter中的自定义的接口回调即可。

同理,下面我用平常我们最常使用的HTTP的请求方式作为对象,来简单的做一个MVP模式的介绍:
首先要创建一个Presenter类,用来封装所有的请求操作,然后再创建一个Callback接口,用来回调在Presenter中的处理完毕后的结果数据,处理的过程则封装在Model类中,当处理完毕后将Model数据回调给Activity进行展示:

Activity类

public class SimpleActivity extends AppCompatActivity implements SimpleCallback {

    private SimplePresenter presenter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_simple);

        //创建一个presenter
        presenter = new SimplePresenter();

    }

    @Override
    public void httpCallback(SimpleModel model) {
        //将得到的数据进行展示
        TextView textView = findViewById(R.id.tv_name);
        textView.setText( model.getName());

    }

    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btn:
                //http请求数据
                presenter.httpRequeset(this);
                break;

            default:
                break;
        }
    }
}

Presenter类

public class SimplePresenter {

    public void httpRequeset(SimpleCallback simpleCallback){
        //这里触发了http的请求代码,得到了姓名:张三

        //******这部分代码可以封装到Model类中
        SimpleModel model = new SimpleModel();
        model.setName("张三");

        //然后将得到的结果回调给Activity
        simpleCallback.httpCallback(model);
    }
}

Callback回调

public interface SimpleCallback {
    void httpCallback(SimpleModel model);
}

Model类

public class SimpleModel {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

这样一个简单的MVP模式就产生了,但是如果我们有很多个Activity,每次都这么创建,就很繁琐,所以要进行简单的封装,比如所有的Activity继承自己的BaseActivity中,同理Presenter也继承自己的BasePresenter中,使用起来就会方便很多。封装的例子我已经在demo中写好,仅供参考,小伙伴们可以根据自己的需求自定义封装。

注意事项:因为Presenter与Activity是绑定的关系,所以当Activity销毁的时候,需要将Presenter置空

MVVM模式可以参考我的另外一篇文章,强烈推荐能力允许的情况下,在Android开发中用MVVM模式,你会爱上它的
MVVM模式的运用:https://blog.csdn.net/qq_33337504/article/details/79037181#commentsedit

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值