热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

AndroidMVP模式初步理解

内容Android中应用mvp,大概是这样的,为了分担Activity和Fragment的任务,就分离出来了P和M,这两个类呢,M实现了数据获取,P作为V和M通信的中间人,至于V和P之间以及

内容

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



推荐阅读
author-avatar
快乐小天使2602926543
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有