【从零开始学架构-李运华】06|复杂地来源:可扩展性
可扩展性指系统为了应对将来需求的变化而提供的一种扩展能力,新需求出现时系统不需要或者仅需要少量修改就可以支持,无需整个系统重构或者重建。
面向对象就是为了解决可扩展性,后来的设计模式更是将可扩展性做到了极致。
具备良好扩展性的两个基本条件:正确预测变化、完美封装变化。
预测变化
架构师需要预测,但预测本身就存在不确定性复杂性在于:
- 不能每个设计点都考虑可扩展性
- 不能完全不考虑可扩展性
- 所有的预测都存在出错的可能性
应对变化方案一
将“变化”封装在“变化层”,将不变的部分封装在独立的“稳定层”。
例一:接受数据格式的扩展
例二:数据库类型的扩展
问题:
- 对两个层的拆分
- 设计两个层间的接口
应对变化方案二
提炼出一个“抽象层”和一个“实现层”
有23种设计模式