依赖倒置原则

依赖倒置原则,Dependence Inversion Principle,简称 DIP,是指程序不应该依赖细节,细节应该依赖于抽象。简单来说,就是要针对接口编程,不要针对实现编程。

使用动机

面对不同的具体实现做到易拔插,松耦合。

如何使用

  • 使用接口或抽象类的目的是制定好规范,不涉及任何具体的操作,把展现细节的任务交给实现类去完成。
  • 让程序中的所有依赖关系都终止于抽象类或接口。

使用原则

  • 高层模块不应该依赖低层模块,两个都应该依赖抽象。
  • 抽象不应该依赖细节,细节应该依赖抽象。

使用示例

以计算机为例。

刚开始的计算机是自成体系的,虽然都是采用同样的设计架构和结构,但组件之间的连接方式不同。如果用 A 公司的电脑,硬盘坏了后只能用 A 公司提供的硬盘。这是一种紧耦合的表现,每个组件将其内部实现暴露给外部对接。

后来几家大公司统一了标准,约定好组件之间连接的标准,标准后面具体怎么做,由相应公司自己负责。这样的结果是,我们既可以使用 A 公司的硬盘,也可以使用 B 公司的硬盘。不光如此,不同大小(如 500G 和 200G)、不同结构(如固态硬盘和机械硬盘)的硬盘也可以互换。真正实现了可拔插、易拔插。

除了硬盘,其他如 CPU、内存、外设设备等各种设备组件也都实现了标准化接口。所有的对接都发生在接口层面,不需要关心具体的实现细节。

资源

  1. 依赖倒置原则 | datawhale
  2. 依赖翻转原则 | 维基百科