6-1 项目模块化-概念
一、组件化与模块化
组件化
以功能为依据,解决复用问题
-
初衷:
可复用
的代码,进行工具性
的封装 -
目的:
复用,解耦 -
依赖:
各组件之间独立,低依赖甚至零依赖 -
架构(纵向):
位于项目底层,被其他上层依赖 -
举例:
Dialog、自定义控件、网络请求、图片加载、工具集、三方库
模块化
以业务为依据,解决复用问题
-
初衷:
将业务
划分,把同一类型业务逻辑进行需求性
的封装 -
目的:
隔离,高内聚 -
依赖:
模块之间无依赖关系,但可以自由组合 -
架构(横向):
位于业务层,平级依赖 -
举例:
用户模块、订单模块、汽车模块、认证模块
二、模块化思想
核心:每个模块作为一个独立的子项目,子项目之间不要有相互依赖(基础模块除外)
多人同步开发
的情况下互不影响- 模块单独维护、升级、调试、测试、打包部署等,实现
轻量化
- 约定
不轻易修改
主程序、基础模块、对内接口等 - 模块之间实现
高效组合、拆分
三、模块化的优缺点
优点
可维护性高
架构清晰,开发灵活
降低业务耦合度
- 方便单模块的
调试、升级、维护
,调试效率也更高 - 模块间的高效组合和拆分
缺点
性能损耗大
调用链长
,排查代码费力- 模块间通信很
消耗性能
- 不要为了模块化而复杂化本来不需要过大架构的项目
四、模块化场景
业务增量包
- 汽车模块为基础模块,可单独打包发布
- APP汽车模块、订单模块、财务模块等,都需要依赖汽车模块
- 任意组合:A+B+C+D、A+B、A+C、B+C
项目部署
- 更好应对项目
容灾、业务重组、服务器负载
等各方面考研 - 用户、汽车、交易者、订单、财务,都是独立的系统,部署到不同服务器
微服务
,是模块化的一种实现方式- SaaS系统,软件即服务/软件服务化,需要用到模块化
五、模块化项目架构设计
- 综合业务层
- 拓展业务层
- 基础业务层
- 公共库
- 实体库
- 基础库