《架构整洁之道》摘录 – 14.3
第 14 章 – 组件耦合 – 3
稳定依赖原则
依赖关系必须要指向更稳定的方向。
计算一个组件稳定性指标的方法:
- Fan-in: 入项依赖,这个指标指代了组件外部类依赖于组件内部类的数量
- Fan-out: 出项依赖,这个指标指代了组件内部类依赖于组件外部类的数量
- I: 不稳定性,I = Fan-out / (Fan-in + Fan-out)。该指标的范围是 [0, 1],I=0 意味着组件是最稳定的,I=1 意味着组件是最不稳定的。
稳定依赖原则(SDP)的要求是让每个组件的 I 指标都必须大于其所依赖组件的 I 指标。也就是说,组件结构依赖图中各组件的 I 指标必须要按其依赖关系方向递减。
如果有稳定组件(假设叫 Stable)要依赖易于变更的组件(假设叫 Flexible),违反了 SDP 原则,可以通过 DIP(依赖反转原则)来修复这个问题。具体步骤:
- 找到 Stable 组件中的某个类 U 需要使用 Flexible 组件中的一个类 C
- 创造一个 UServer 组件,并在其中设置一个 US 接口类
- 确保 US 接口类中包含了所有 U 需要使用的函数
- 类 C 实现 US 接口类
这样一来,Stable 和 Flexible 的依赖关系就打破了,这两个组件都依赖于 UServer 组件。