模块化
模块是指独立的业务模块,比如支付模块、登录模块。在 AndroidStudio 中,一个模块同样对应着一个 Module
,模块化就是将业务拆分成不同的 Module
模块,模块之间通过相互依赖的方式进行调用与通信。
从架构层面来说,二者的核心思想都是分而治之,都是为了提升代码的质量和可维护性,但是差别是在划分的粒度上,模块的粒度比组件的粒度高,通常情况一个模块中可能包含多个组件。
组件化是纵向分层,模块化是横向分块。
组件化的优点
-
提高开发效率:通过组件化的解耦,降低各个组件之间的相互依赖,使每个组件都是高内聚低耦合的状态。单独某个组件的修改不会对其它组件有重大影响,对于开发和测试来说,都提高了工作效率。同时可维护性也极大提升。
-
功能复用:每个单独的组件就是一个单一功能,对于业务线的开发团队来说,通过直接使用组件快速完成功能开发,同时减少了重复的开发工作量。
2. 组件化案例
在这部分,主要是结合网上一些优秀团队分享的组件化方案进行剖析。
2.1 有赞微商城 Android 组件化
有赞微商城分享的组件化方案详细介绍了实施组件化方案的背景,在基于日益复杂的业务模块中,代码出现大量冗余、打包时间逐渐增长以及各个业务模块之间相互耦合等。面临的问题有:
-
模块只是项目结构的概念(一个模块一个
Module
),在逻辑层并没有模块这个概念 -
模块本身没有生命周期控制
-
公用服务中心化,公用逻辑部分全部都在
Common
模块中 -
模块对外暴露的服务不可知,都是直接依赖模块内部的代码逻辑
-
模块无法单独打包,针对模块的代码改动,只能全量打包之后才能看到效果
这些问题也是很多项目发展到一定阶段要面对的问题,为了解决这种问题,就需要对架构进行调整重构,严格按照组件化的强要求来进行业务模块的拆分。下面我们看下有赞团队是如何去落地组件化方案。
1. 模块的拆分与抽象
将模块的功能抽象出基础类,形成模块化支持组件,这个基础 Module
提供的