因为做毕设的原因,好久没有更新啦。前几天(其实是两个月前)听了一节公开课,内容是android组件化。在我遗忘之前跟大家唠一唠Android组件化。
传统的单一分层
如图,传统的分层整个项目也就只有一个app模块。各式各样的业务逻辑都写在app模块中不同的包下。这个项目是我就职前的一个Demo,代码也就两三千行的量。在一个商业App中,基本上都是十万百万级别,分包的缺点也显而易见了。
1.项目不断扩大,分包困难。项目失去层次感,维护困难。
2.分包约束度不足,很容易出现各个包之间互相调用,代码高度耦合。
3.团队开发在版本管理中很容易出现代码冲突和覆盖问题。
组件化
组件化是指解耦复杂系统时将多个功能模块进行拆分、重组的过程。在Android工程上来看就是把app按照其业务的不同,划分成不同的Module。比如美团:
它的外卖模块和电影模块是完完全全不同功能的两个模块,两个模块的开发人员完全不用关心另一个模块的实现。依此我们可以猜想一下他们的架构模式...
App壳工程:负责管理各个业务组件和打包APK,没有具体业务功能
业务组件层:根据不同的业务功能,独立出来的业务组件
功能组件层:对上层通过基础功能服务
基础库:包含了各种开源库以及和自研工具库
介绍完这些,我们来看一下组件化的工程结构是什么样子:
为什么要组件化
1.各个组件专注自己功能的实现,模块中代码高度聚合,只用负责一项任务,也就是常说的单单一职责。
2.各业务研发可以互相不干扰,提升协作效率。
3.业务组件可以进行拔插,灵活多变。
4.业务组件之间将不再直接引用和依赖,各个业务模块组件更加独立,降低耦合。
5.加快编译速度,提高开发效率。
本来我下来打算将如何组件化,但是在拜读了些许书籍以后,我觉得这个问题还得要有些知识铺垫的,所以我打算放放。毕竟这一期拖更半年了,我好好整理一下手头的资料,把最好的内容呈现给大家!