Skip to content

LayeredArchitecture

LinXiao edited this page Jul 23, 2017 · 2 revisions

分层框架

分层架构的主要目的是为了将Activity和Fragment中繁重的数据处理逻辑抽离出来交由一个中间层处理,并统一管理缓存、数据库、网络调用,向上层提供封闭数据获取细节,以此减少Activity和Fragment的负担。大幅提升项目的可读性、健壮性、可维护性。

使用监听器回调

framework模块的结构和app工程的建议结构如图   retrofit-base architecture

应用整体分为4层,各层概要介绍如下:

  • UI层:应用UI相关的模块,比如Activity、Fragment、Dialog、自定义View等,Activity、Fragment、DialogFragment除非是有特殊用途,否则建议整体继承自framework包的BaseActivity、BaseFragment等基类,享受框架提供的功能。

  • DataManager层:负责应用整体的数据管理,UI层与其交互通过该层提供的ActionCallbackListener接口,在回调中返回数据。UI层不可直接处理缓存,网络调用,这些功能应该全部由DataManager负责。

  • DataStore层:本层主要由各种数据管理类和声明的Server API组成,提供实例给上层调用

  • Support:本层包含各种工具类、系统功能的封装和第三方SDK模块,为整个App提供支持,从严格意义上来讲并不属于“层”更像是App的Support Library,整个App内各层皆可使用本模块提供的功能,但是同理,跟UI相关的封装和工具类仍然应该只在UI层中使用。

使用RxJava

retrofit-base architecture

使用RxJava与不使用RxJava最大的区别是可以将绝大部分业务调用交给RxJava统一管理,其它结构与基本分层完全一致。
由于RxJava的接入,在Activity基类和DataManager中也就不存在管理Retrofit Calls的逻辑。使用rx-lifecycle框架可以很轻松的将Observable的订阅与UI的生命周期绑定,避免在网络较差的条件下因回调时UI销毁而产生崩溃或数据异常

Clone this wiki locally