如何实现组件化
晓得了组件化的优点之后,那么在实际的业务开发中,如何实现呢?首先做为组件化,必须相关业务拆分,单独成一个Module,并且可以单独的编译运行,这是最起码的一个前提,否则,就不能成为真正意义上的组件化,要实现组件化开发,需要约束且需要的考虑的因素,大概总结如下。
1、代码架构拆分,合理规划
一个项目从0到1的实施,少不了很多基础的依赖,比如网络,比如图片加载,比如一些第三方sdk等等,无论你的项目是否是组件化,这些潜在的前提,是必不可少的,可能不是组件化的项目,这些底层的使用会和业务相关的代码放到一起,但在组件化的项目,基础库和业务层还是要进行剥离的。
首先呢,基础的依赖是一层,这一层,包含了上层业务层所需要的必须实现,比如网络库,比如图片加载库,比如Dialog加载库,再比如一些常见的,工具类,数据操作等等,我们可以叫它为基础库,基础库的存在,除了提供必须的能力之外,更是对能力的封装,封装在于,给业务层提供方便的调用方式,更是为了可替换,也就是说,后续一旦升级或者更换其他的,直接在基础库中更改即可,业务层无需操作,大大减少耦合度,比如图片加载,一开始我们使用的是Glide,后边要调整为coil,只需要在基础库中更改即可。
基础库,在经历的封装中,我是把每一个能力项,封装成了一个Module,比如,网络一个,图片加载一个等等,这样做的一个目的,是便于打aar包,也是便于业务层的调用。如下图,是我曾经的封装,看起来很多,但只向业务层暴露依赖使用方式,毕竟这都是基础能力,业务层是看不到的,当然,这个看大家的实际业务需求。
当基础库满足实际的开发需求之后,基础库就可以提供给业务层使用,可以以aar的方式,也可以以library的形式,我是比较推荐aar的方式,远程依赖,方便业务层来调用,后期更改,业务层只需要更改版本号即可,对于基础库,可以逐个提供,也可以聚合提供。