同系列传送门
关于组件化,这边分四步:1定义,2需求,3优劣,4改造步骤(含框架推荐);
1、组件化的定义:
各个业务模块可单独运行,模块相互联系只可以使用唯一的入口。
如图:
2、当前项目是否需要采用组件化?
- 首先看项目大小,小项目不建议组件化。大项目考虑长远发展的话建议组件化。
- 其次看业务逻辑,如果各模块或者业务耦合性特别高的话不建议组件化。耦合性较低,或者有能力,有精力去抽模块,抽逻辑,那么建议组件化。
- 独立开发且工期紧张,不建议组件化。反之则建议组件化。
3、组件化优劣:
优点有四:
- 逻辑解耦,代码解耦
- 变化灵活,模块可无缝去除或者替换
- 编译快,模块可单独编译,
- 复用性强,组件可跨项目互相移植。
缺点有二:
- 代码量多(相关组件化配置代码,有复用但不便提取的代码)
- 代码书写规范多(组件之间的跳转传值规范,复用代码规范)
4、改造步骤:
- 代码分包结构改动,将代码整理成 业务包模式 的结构,不知道这个模式是什么样的可以看这里:Android 架构设计(二):分包和文件结
- 抽Model,将模块抽取成Model,这边要注意,Model之间不可以相互依赖和引入包括你的主Model。
- 抽公共LIbs或者公共Model,将公用类抽取到公用Libs,因为业务组件之间无法互相引入类,这就要让组件自行去依赖对应的Libs,比如用到了网络,那么就依赖事先抽出网络Libs,用到了自定义View,那么就去依赖自定义View的Libs。
- 添加路由来使得模块之前可以跳转传值;这里一般用三方框架实现,比较常用的两个ARouter 和 CC个人推荐用CC框架。这两个框架使用都比较简单,百度上写的比较详细,搜索“Android 组件化CC框架” 或者 “组件化 ARouter” 可以找到基本使用,篇幅原因我这边就不去搬运了。