# 依赖倒置原则

> 高层模块不应该依赖低层模块，两者都应该依赖其抽象。

- ID: m01244
- 分类: structure
- 领域: 逻辑学

## 定义

高层模块不应该依赖低层模块，两者都应该依赖其抽象。抽象不应该依赖细节，细节应该依赖抽象。脚手架作用：解耦核心逻辑。CEO（高层）不应该依赖具体的秘书（低层），而应该依赖“秘书岗位职责”（抽象）。这样换了秘书，CEO的工作流也不会断。

## 机制

SOLID 中的"D"。高层策略模块与低层实现模块都只依赖抽象接口，而非彼此的具体类。这样换实现（低层）不影响高层逻辑，由高层定义接口、低层去适配，实现解耦与可替换。本质是"面向接口编程"。

## 练习

1）识别高层业务逻辑与其所需的低层能力；2）为低层能力定义抽象接口（由高层或共享层拥有）；3）让低层模块实现该接口；4）高层只通过接口调用，运行时注入具体实现；5）新增实现时无需改动高层。

## 脚手架用法

解耦核心逻辑。CEO（高层）不应该依赖具体的秘书（低层），而应该依赖“秘书岗位职责”（抽象）。这样换了秘书，CEO的工作流也不会断。

[阅读网页](https://thinkingmodels.site/entries/detail/m01244)
