内容纲要
可扩展
可扩展性是指系统为了应对将来变化而提供的一种扩展能力,当有需求变化时,系统不需要或者仅需少量的更改就可以支持,不需要整个系统重构。
具有良好扩展性的系统的基本条件:
- 正确预测变化
- 完美封装变化
预测变化
Q:为什么要预测变化?
A:大部分系统发布后,会不断有新的需求需要实现。预测将来可能产生的变化并作出合理的设计,可以为后续的需求实现提供便利。
预测变化的复杂性
唯一不变的是变化 ╮(╯▽╰)╭️
预测的复杂性在于:
- 不能每个设计点都考虑可扩展性
- 不能完全不考虑可扩展性
- 所有的预测都存在出错的可能
预测变化的难点
- 没有通用标准
- 不同发人会有理解偏差
- 需要凭经验、直觉来判断
应对变化
方案一
将变化封装在一个变化层,将不变封装在一个稳定层
难点
- 拆分变化层和稳定层
- 不同的人有不同的理解
- 有时候变化和稳定的界线会模糊不清并可能随时间推移产生变化
- 设计变化层和稳定层之间的接口
- 稳定层
- 越稳定越好
- 对于变化层来说
- 在差异的多个实现方式中找到共同点
- 保证新加入功能时对原先接口影响尽可能小
- 稳定层
方案二
提炼出一个抽象层(稳定)和一个实现层(变化)
典型实践
- 设计模式
- 规则引擎
装饰者模式 ↓
总结
不论哪种方案,其核心始终在于分离“变化”和“稳定”