内容

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;  }}
以上。不知道为什么,就想写篇博客,那就就这样吧。。。。。。。。。。。。。。。。。。。。。


更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. Android应用开发笔记(4):再探Android多应用间数据共享机制,自定义C
  3. android 用SharedPreferences作为数据存储
  4. Android进阶知识树——Android(安卓)多进程、Binder 你必须知道
  5. android解析XML文件的三方法之DOM
  6. Android调用天气接口(和风天气)
  7. Android开发——利用Cursor+CursorAdapter实现界面实时更新
  8. Android(安卓)界面滑动实现---Scroller类 从源码和开发文档中学
  9. 动手撸一个Android路由框架LuRouter

随机推荐

  1. Android(安卓)adb远程调试
  2. Android点击菜单之后跳转到一个新的页面
  3. 利用power_profile.xml获取Android运行时
  4. FFmpeg 音频编码(PCM数据编码成AAC androi
  5. android 跳转时出现短暂的黑屏继承AppCom
  6. Android(安卓)Studio 1.2正式版发布,要如
  7. Android(安卓)开发中的日常积累
  8. Android(安卓)面试题总结之View(一)
  9. Android强制弹出,隐藏输入法.
  10. Android(安卓)string-array数据源简单使