依赖反转原则的英文翻译是“ Dependency Inversion Principle”,缩写为 DIP。Robert Martin 在 SOLID 原则中是这样定义它的:“High-level modules shouldn’t depend on low-level modules. Both modules should depend on abstractions. In addition, abstractions shouldn’t depend on details. Details depend on abstractions.”。王争老师形貌是这样的:高层模块(high-level modules)不要依赖低层模块(low-level)。高层模块和低层模块应该通过抽象(abstractions)来相互依赖。除此之外,抽象(abstractions)不要依赖详细实现细节(details),详细实现细节(details)依赖抽象(abstractions)。
所谓高层模块和低层模块的分别,简朴来说就是,在调用链上,调用者属于高层,被调用者属于低层。
刚开始学习依赖反转,估计会问谁依赖谁?怎么反转?
首先有个问题请想想,调用者和被调用者、消费者和生产者,谁依赖谁?因为有可被调用的事物(类、模块),调用者才可以调用,生产生产物了消费者才可以消费使用,所以相信大部门人都会认为调用者依赖被调用者、消费者依赖生产者。
以消费者和生产者为例: