依赖倒转原则:
高层模块不应该依赖底层模块,他们都应该依赖抽象;
抽象不应该依赖于细节,细节应该依赖于抽象。
另一种表述:
针对接口编程、不要针对实现编程。
开闭原则是面向对象设计的目标的话,依赖倒转原则就是面向对象涉及的主要手段。
类之间的耦合关系:
零耦合关系
具体耦合关系
抽象耦合关系(这个是依赖倒转原则的关键)
例子:
下面这个顾客Customer类中有一个在A商店Ashop购买商品的行为。
如果我要是在B商店买东西呢,C、D呢,这个时候就可以抽象一个Shop商店接口,然后让具体的商店去继承它,然后再让customer去关联依赖这个接口就好,这样顾客面向接口编程,不需要去修改源代码。