依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,高层模块不应该依赖低层模块,二者都应该依赖其抽象。
要理解何为倒置,那就先得明确什么是“正向”,可以看到下图代码是自上而下地调用,即高层模块依赖底层模块,这就是正向依赖。:
而依赖倒置则是使用抽象接口来降低耦合,可以看到箭头是自下而上的,这就是所谓的倒置。
这时有人说,如果我箭头调转,抽象类在下,实现类在上,那不就变成正向了?
这种观点是不成立的,因为这是 UML 规定抽象类必须在上,实现类在下。