什么是稳定性依赖原则?
稳定依赖原则(SDP)组件结构依赖图中各组件的 I 指标必须按照其依赖关系方向递减。
稳定性指标如何计算?
- Fan-in:入向依赖,外部类依赖于此组件内部类的数量。
- Fan-out:出向依赖,此组件内部类依赖于组件外部类的数量。
- I:不稳定性,I=Fan-out/(Fan-in+Fan-out)。该指标的范围是[0,1],I=0意味着组件是最稳定的,I=1意味着组件是最不稳定的。
上图所示,其依赖关系从上至下,其稳定性指标依次递减(1->0)。
当I指标等于1时,说明没有组件依赖当前组件(Fan-in=0),同时该组件依赖于其他组件(Fan-out> 0)。这是组件最不稳定的一种情况,我们认为这种组件是“不负责的(iresponsible)、对外依赖的(dependent)”。由于这个组件没有被其他组件依赖,所以此组件变更也没有其他顾虑,同时也因为该组件依赖于其他组件,所以就必然会经常因为其他组件的变更而变更。
相反,当I=0时,说明当前组件是其他他组件所依赖的目标(Fan-in> 0),同时其自身并不依赖任何其他组件(Fan-out = 0)。我们通常认为这样的组件是“负责的(responsibile)、不对外依赖的(independent)”。这是组件最具稳定性的一种情况,因为有其他组件对它有所依赖,所以变更时会更有顾虑,同时由于它没有对外依赖关系,所以不会有来自外部的变更理由。