Android MVP模式 初步理解

内容

Android中应用mvp,大概是这样的,为了分担Activity和Fragment的任务,就分离出来了P和M,这两个类呢,M实现了数据获取,P作为V和M通信的中间人,至于V和P之间以及P和M之间是怎么通信的呢,是分别用了一个接口。这两天在学习MVP,理解如上,说明如下。

1.Mode 数据处理模块。独立的用来处理数据的类,或者一部分类。功能一样,都是获取数据的。

2.View 视图,这里应该是指Activity和Fragment。展示数据的页面,Activity和Fragment不再进行复杂的数据处理,只负责展示数据。

3.Presenter 数据中间类  用来处理中间数据,周旋于Mode和View之间。

其实MVP就是三个类之间通过两个接口的回调来传递数据。。。。。个人之见。

定义两个接口CallbackA, CallbackB;

public interface CallbackB{
    ObserData(Object obj);//该方法用来传递Mode类获得的数据
}

public interface CallbackA{
   setView(Object obj);//设置视图方法,供Activity、fragment实现
}

接口有了,下边新建三个类,分别对应M、V、P;

首先应该是V,也就是我们的Activity或者Fragment,该类实现接口CallbackA, 持有Presenter实例。这时候V类就调用presenter.getData()方法来请求数据。如下:

public class V extends Activity implements CallbackA{
   
   Presenter presenter;//持有Presenter实例,用来调用Presenter中获取数据的方法。
   presenter.getData();//调用该方法来获取Data.
   @override
   setView(Object obj){
      //该方法根据obj数据来设置视图。
  }
}

V大概就是这样,下面是Mode类,该类用于获得数据。跟V没直接关系。Mode类就是普通的Java类,里边会实现一些获取数据的方法,他会持有CallbackB的实例。以便于获取完数据后调用ObserData()方法。Mode类如下:

public class Mode{
    CallbackB callbackB;
    getData(){ 
        //获取数据。真的获取数据。暴露出来给Presenter类调用
  }
    //拿到数据后,调用callbackB的方法,将数据回传到Presenter;
   callbackB.ObserData(obj);
}

V和Mode完事了之后,就是中间类Presenter,这个类既然是中间类(介于V和M之间),所以他需要双向通信。

所以Presenter类

        1.持有CallbackA的实例,这样用于调用setView()方法,以保证和 V 类的通信。

        2.实现CallbackB接口,用于保持和Mode类的通信,使Mode类获得的数据回传到Presenter

        3.持有Mode类的实例,用于调用Mode类中获取数据的方法。

  

public class Presenter implements CallbackB{
   Mode mode;
   CallbackA callbackA;
   
  public void getData(){//getData方法,暴露出来给V调用
      mode.getData();
  }

//CallbackB接口回调,用于接收Mode获取的数据
  @override
  ObserData(Object obj){ 
     callbackA.setView(obj);//拿到数据后,调用callbackA的setView方法,将数据回传到V;
  }
}
以上。不知道为什么,就想写篇博客,那就就这样吧。。。。。。。。。。。。。。。。。。。。。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值