dev.to | 📄 原文链接 | 2026-10-29 收录

我终于搞懂了依赖倒置:箭头到底该往哪边指

来源:dev.to — 2026-10-28

📋 概述

这是 SOLID 系列最后一篇,作者说前四个原则其实都在把结论推向这里:单一职责给了小类,开闭教会你新增而不是修改,里氏替换和接口隔离给出诚实的小接口,而依赖倒置决定谁指向谁。定义的官方版本很不友好:高层模块不应依赖低层模块,两者都应依赖抽象;抽象不应依赖细节,细节应依赖抽象。说人话就是:你的业务逻辑不该 import 数据库驱动,订单、发票、规则这些要紧的东西应该坐在顶层,对底层管道(Postgres、Stripe、文件系统)一无所知,管道应该插进业务逻辑里,而不是反过来。他用一个下单结账的例子演示箭头如何翻转:OrderService 自己 new 出依赖,于是测试要真跑数据库和 Stripe 密钥、营销要试免费试用就得往里塞 if、数据库迁移要改那个本不该关心的文件。

🔑 核心要点

💡 金句

“your business logic should not import your database driver.”
译:你的业务逻辑不应该 import 你的数据库驱动。
← 返回 dev.to 首页