前言
最近在做 Android 基础架构方面的工作,所以打算写一系列文章来整理这方面的知识。我将从 0 到 1 仿网易云音乐搭建一个 APP 来介绍自己是怎么设计应用层架构的。
本文主要分析了传统架构、模块化架构以及组件化架构之间差别。
一、传统架构分析
下图就是一个传统架构模式,所有的代码都在一个工程 app module 里面,
传统架构图.jpg
小型的项目采用这种架构模式也没有问题,但是对一般项目会越来越大的时候就会开发越来越困难。
传统架构的缺点:
- 单一 app 工程,代码量指数级膨胀,带来一系列的问题,如:代码合并,编译时间。
- 业务逻辑,与基础功能没有做区分,紧密耦合在一起,代码复用行为0。
二、模块化架构分析
为了避免所有代码都往一块堆,就出现了模块化架构思想,下图是一个模块化架构模式,
模块化架构图.jpg
它是一个分层的体系结构:
其中 宿主 是一个单独的 module,不存放任何逻辑,它的作用就是对外产生一个 apk;
下一层 业务组件 是我们的产品业务,每一个业务都是一个单独的 module;
接着 基础业务组件 层是我们公司所有 app 通用的一些东西,它们也是独立的 module;
再往下 功能组件 层与我们的业务逻辑没有一点的关系,同样每一个组件也是独立的 module;
这个体系结构是非常清晰,所以要迭代一个新的 app 是非常快的,因为基础业务组件和功能组件都是可以复用的。
但是它也有缺点:就是业务组件之间强依赖。
三、组件化架构分析
为了解决模块化架构中的强依赖缺点,又产生了组件化架构,下面是组件化架构模式,
组件化架构图.jpg
其实组件化和模块化架构思想差别不是很大,组件化主要是对业务组件进行解耦。
总结
本文主要介绍了一下目前三种架构模式的区别,我主要是采用了组件化架构模式进行开发的,接下来的文章将会详细介绍是怎么搭建架构的。
(ps:小女子不才,欢迎在评论区指出文章中不足的地方)
参考文章:
https://www.jianshu.com/p/cac0beae8876
https://juejin.im/post/5b5f17976fb9a04fa775658d