相关系列文章
模块化解耦框架RxFluxArchitecture1-框架简介
模块化解耦框架RxFluxArchitecture2-基本功能实现
模块化解耦框架RxFluxArchitecture3-订阅管理绑定生命周期
模块化解耦框架RxFluxArchitecture4-依赖库与依赖注入
模块化解耦框架RxFluxArchitecture5-Application多模块共存
架构介绍
模块化解耦框架 RxFluxArchitecture 采用单向数据流架构 Flux 和双向绑定架构 MVVM。
架构分为三个层级 View,ActionCreator,Store。
1、View
UI 界面,根据用户交互调用 ActionCreator 方法,响应 ActionCreator 或 Store 发送的通知,完成 UI 更新。
2、ActionCreator
完成用户交互操作(接口调用、耗时操作、页面跳转通知等),通知 Store 或 View。
- 发送封装操作结果的通知
RxAction
到 Store; - 发送 UI 响应通知
RxChange
到 View; - 发送操作异常通知
RxError
到 View; - 发送操作异常重试通知
RxRetry
到 View; - 发送操作进度通知
RxLoading
到 View。
3、Store
维护 View 中需要的数据,接收操作结果通知RxAction
,提取其中封装的数据供 View 使用,处理不同的业务逻辑。
- 发送 UI 响应通知
RxChange
到 View,进行 UI 更新; - 通过
LiveData
使 View 进行 UI 更新。
框架特点
1、单向数据流
使用 FaceBook 推出的前端架构 Flux,数据朝单一方向流动,无操作方法回调,上下层级关系明显,逻辑清晰。
2、层级解耦
核心库core-eventbus
(带有 Tag 功能)实现数据总线功能,架构中上一层级不持有下一层级对象,本层级只需完成操作并发送通知,不需要知道下一层级谁来响应通知。
3、双向绑定
- Store 可以通过
androidx.lifecycle.LiveData<T>
实现 MVVM 架构,通知 View 进行 UI 更新。 - Store 继承
androidx.lifecycle.ViewModel
,在 View 横竖屏切换时维持数据。
4、订阅管理绑定生命周期
- Store 实现
androidx.lifecycle.LifecycleObserver
,自动关联 View 生命周期。 - View、Store 跟随 View 生命周期自动注册订阅、取消订阅。
5、模块化中依赖注入实现
核心库core-arch
中使用 Dagger.Android 实现依赖注入,业务模块仅需创建@Module
标注的依赖注入对象生成库, 无需知道如何实现依赖注入。
6、Application多模块共存
核心库core-arch-annotations
和core-arch
通过注解编译时生成代码和反射实现多个业务模块共存 Application 生命周期方法代理类。
7、单元测试
- ActionCreator 原则上不使用 Android SDK 代码,可使用JUnit进行单元测试。
- 使用RESTMock、Robolectric、Daggermock等库方便测试项目代码。
源码
开源模块化解耦框架RxFluxArchitecture,欢迎大家点赞Fork,更欢迎点评指导。