Android中的MVP框架搭建

来源:互联网 发布:姚明身体数据 编辑:程序博客网 时间:2024/05/21 14:50

一,MVP和MVC的区别
MVP是Model View Presenter的缩写,是由MVC演化而来的,那么MVP和MVC的区别是什么呢,

从上图中可以看出,MVC之间是允许View和Model进行交互的,而MVP中的View和Model交互必须通过Presenter这个中间人进行操作的。

传统的MVC:

  • Model:业务逻辑和实体模型;
  • View:对应的布局文件;
  • Controllor:对应的Activity;

这种模式其实View能做的事情基本上没有什么,数据绑定和事件监听等等事情都是在Activity中完成的,实际上Activity既做了Controllor的事情,又做了View的事情。会导致Activity中的代码量很大,从阅读和维护方面来讲都是比较吃力的。

新兴的MVP:

  • Model:业务逻辑和实体模型;
  • View:对应Activity,负责绘制View及用户交互的过程;
  • Presenter:负责完成View和Model之间的交互;

将架构模式改为MVP的时候,这时候将复杂的业务逻辑和耗时操作等职责都交给了Presenter去做了,Activity变得很轻松。代码量的减少,更容易阅读了。

二,代码及示例

具体流程:

  1. View绘制界面,引用Presenter;
  2. Presenter调用Model,进行具体业务的操作;
  3. Model实现逻辑,回调Presenter;
  4. Presenter回调View,将结果展示给用户;

下面演示一下一个简单的请求天气的过程;

网络请求使用okhttp:

compile 'com.squareup.okhttp3:okhttp:3.5.0'

目录结构:

1,建立Bean

public class WeatherBean {    private String city;    private String wd;    private String ws;    private String time;    //此处省略get和set方法;}

2,建立BaseView和BasePresenter

public interface BaseView {    void showLoading();    void hideLoading();    void showError();}
public class BasePresenter<V> {    public V mvpView;    public void attachView(V mvpView) {        this.mvpView = mvpView;    }    public void detachView() {        this.mvpView = null;    }}

3,