码迷,mamicode.com
首页 > 移动开发 > 详细

android-MVP+RxBus开发框架Demo

时间:2018-09-19 19:42:58      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:之间   技术   界面   统一   java   代码   识别   函数式编程   activex   

引子

总算有时间总结一下MVP代码框架,顺便把最近看到的消息总线RxBus 也整合到一起 。

本文内容主要是 本人对MVP代码框架的理解,以及 一种比较好理解的自定义RxBus的写法。

最后将会奉上Demo的Github地址;

 

MVP代码架构


Model层,纯粹的数据层,核心代码是 数据的获取和变更(即增删改查),数据来源可以是网络请求,本地文件(xml,json),本地数据库(sqlite);通常,数据变更或获取逻辑 执行完毕之后,会 通过返回值,或者 实参赋值的方式告知P层;(纯java)
View层,纯粹的视图UI层,核心代码,是 界面组件的初始化,UI变更的函数等UI逻辑,不涉及任何的业务逻辑;(java+layout.xml)
Presenter层,纯粹的业务逻辑层,没有任何UI变更代码,没有任何 数据获取或变更的代码,但是,可以调用UI变更的函数,可以调用数据获取或变更的函数。(纯java)

 

技术分享图片

 

RxBus消息总线

由于近期是第一次接触,虽然可以将RxBus应用到我写的框架中,但是仍然理解不够深刻。

所以原理方面就不在这里细说了,下面列出RxBus相关的基本概念;

ReactiveX:专注于异步编程和控制可观察数据和事件流的API,它组合了观察者模式,迭代器模式,函数式编程的优秀思想;

RxJava: ReactiveX的java实现;

RxJava作用 :异步编程,可以很方便解决任何android组件之间的消息传递,比 startActivityForResult的方式更好。(但是理论上不仅仅是组件之间,任意两个对象之间都可以用这种方式传递消息)

核心类: Observable(观察者) Subscriber(订阅者);

Observable :  发出数据流或者事件的类,

Subscriber :  对这些发出的 items (数据流或者事件)进行处理(采取行动)的类。

RxBus: 我们用自己的代码实现的 异步编程消息总线;(所以每个人写的都可能不同);

 

 

下面说一下我自己写的RxBus库里面用到的技术点:

1-线程安全的单例模式(同步代码块+多重判空+volatile关键字); 消息总线类,在项目中只能存在一个,才能保证消息的统一分发

2-线程安全的CopyOnWriteArraySet集合类

3-注解函数+反射调用,实现“订阅者”执行函数的自动调用

 

Demo整体代码框架一览

技术分享图片

 

 按照标记来:

1-数据层Model全部代码

2-逻辑层Presenter全部代码

3-视图层View的java代码

4-视图层View的xml配置

5-将消息总线 封装到一个Android-library中

6-注解接口,用于让RxBus识别出回调方法并且执行

7-反射调用的辅助类,由于是完全独立的功能,并没有和RxBus形成绑定关系,所以单独提出来

8-RxBus的接口类

9-RxBus实现类

 

然后MVP层的详细结构:

技术分享图片

1-数据Model层的接口规范,使用了泛型接口,方便对接不同的业务

2-业务Presenter层抽象类,使用了泛型接口,并且将公共的函数提取到了抽象类中,最大程度精简 业务代码;

3-视图View层接口规范,要求所有 需要对接P层的组件都要实现这个IView接口。

4-业务1,以学校为案例,这个leader是领导;

5-业务2,学生

6-业务3,老师

7-P层实现类

8-业务1的Fragment

9-业务2的Fragment

10-业务3的Activity

 

 最终效果

技术分享图片

 

OK,任意组件之间的信息互通,用过这种方式,eazy。

 

Github地址

https://github.com/18598925736/MVP-RxBus

 

 

 

 

 

 

 

android-MVP+RxBus开发框架Demo

标签:之间   技术   界面   统一   java   代码   识别   函数式编程   activex   

原文地址:https://www.cnblogs.com/hankzhouAndroid/p/9676040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!