同系列传送门


关于组件化,这边分四步:1定义,2需求,3优劣,4改造步骤(含框架推荐);

1、组件化的定义:

        各个业务模块可单独运行,模块相互联系只可以使用唯一的入口。

如图:

Android 架构设计(四):组件化?_Android 组件化改造方案

 2、当前项目是否需要采用组件化?

  • 首先看项目大小,小项目不建议组件化。大项目考虑长远发展的话建议组件化。
  • 其次看业务逻辑,如果各模块或者业务耦合性特别高的话不建议组件化。耦合性较低,或者有能力,有精力去抽模块,抽逻辑,那么建议组件化。
  • 独立开发且工期紧张,不建议组件化。反之则建议组件化。

3、组件化优劣:

优点有四:

  1. 逻辑解耦,代码解耦 
  2. 变化灵活,模块可无缝去除或者替换
  3. 编译快,模块可单独编译,
  4. 复用性强,组件可跨项目互相移植。

缺点有二:

  1. 代码量多(相关组件化配置代码,有复用但不便提取的代码)
  2. 代码书写规范多(组件之间的跳转传值规范,复用代码规范)

4、改造步骤:

Android 架构设计(四):组件化?_android_02

  1. 代码分包结构改动,将代码整理成 业务包模式 的结构,不知道这个模式是什么样的可以看这里:Android 架构设计(二):分包和文件结
  2. 抽Model,将模块抽取成Model,这边要注意,Model之间不可以相互依赖和引入包括你的主Model。
  3. 抽公共LIbs或者公共Model,将公用类抽取到公用Libs,因为业务组件之间无法互相引入类,这就要让组件自行去依赖对应的Libs,比如用到了网络,那么就依赖事先抽出网络Libs,用到了自定义View,那么就去依赖自定义View的Libs。
  4. 添加路由来使得模块之前可以跳转传值;这里一般用三方框架实现,比较常用的两个ARouter 和 CC个人推荐用CC框架。这两个框架使用都比较简单,百度上写的比较详细,搜索“Android 组件化CC框架” 或者 “组件化 ARouter” 可以找到基本使用,篇幅原因我这边就不去搬运了。