依赖倒置原则: A、高层模块不应该依赖低层模块。 两个都应该依赖抽象。
B、抽象不应该依赖细节。 细节应该依赖抽象。
如果无论高层模块还是低层模块都依赖于抽象, 具体一点就是依赖于接口或抽象类, 只要接口是稳定的,那么任何一个的更改都不用担心其他受到影响, 这就使得高层和低层模块都可以很容易的被复用。
但是如果还向上图那样 高层模块依赖低层模块 那么当需求发生改变时, 发现高层模块和低层模块是“交融”在一起的 耦合性特别强, 此时就很难去复用 高层模块了。
那么, 为什么依赖了抽象的接口或抽象类, 就不怕更改呢? 下文的“里氏代换原则”可以很好地解释这个原因。