先说说我自己的组件化架构设计方案,请看下图:
图中可以看到,从上往下分为4层:APP壳工程、常规业务组件层、基础业务组件层、基础功能组件层。
为了便于理解,按照从下往上的顺序来讲讲我的分层思路。
- 基础功能组件
这个层的组件都是最基础的功能,通常它不包含任何业务逻辑,也可以说这些组件是一些通用的工具类。例如日志记录组件,它只是提供了日志记录的能力,你要记录什么样的日志,它并不关心;例如基础UI组件,它是一个全局通用的UI资源库;例如网络服务组件,它封装了网络的请求能力。 - 基础业务组件
该层组件是对一些系统通用的业务能力进行封装的组件。例如公共业务组件里,我封装了BaseActivity、BaseFragment等;例如分享能力组件,我封装了微信、QQ、微博等的分享能力,其他业务只要集成该组件就能进行相关分享;例如共享公共数据组件,我封装了应用可以全局访问的数据,如用户登录信息等。 - 常规业务组件
该层的组件就是我们真正的业务组件了。我们通常按照功能模块来划分业务组件,例如注册登录、用户个人中心、APP的首页模块等。这里的每个业务组件都是一个小的APP,它必须可以单独编译,单独打包成APK在手机上运行。 - 核心管理组件
主要包括路由服务组件、组件生命周期管理组件。路由主要是为了解决组件间通信问题,而组件生命周期管理主要是为了解决组件的初始化等问题。 - APP壳工程
壳工程依赖了需要集成的业务组件,它可能只有一些配置文件,没有任何代码逻辑。根据你的需要选择集成你的业务组件,不同的业务组件就组成了不同的APP。
组件之间必须遵循以下规则:
- 只有上层的组件才能依赖下层组件,不能反向依赖,否则可能会出现循环依赖的情况;
- 同一层之间的组件不能相互依赖,这也是为了组件之间的彻底解耦;
现在已经有很多成熟的组件化框架了,比较著名的有阿里的手淘atlas框架https://github.com/alibaba/atlas,但是这些框架可能都过于复杂,上手难度高,对很多人来说并不一定好用。总的说来,没有最好的架构设计,只有合适自己的架构设计,不能为了架构而架构。
系列文章
Android组件化开发实践(一):为什么要进行组件化开发?
Android组件化开发实践(二):组件化架构设计
Android组件化开发实践(三):组件开发规范
Android组件化开发实践(四):组件间通信问题
Android组件化开发实践(五):组件生命周期管理
Android组件化开发实践(六):老项目实施组件化
Android组件化开发实践(七):开发常见问题及解决方案
Android组件化开发实践(八):组件生命周期如何实现自动注册管理
Android组件化开发实践(九):自定义Gradle插件