开闭原则与依赖倒置原则区别:原类不变,新增类(功能)vs 接口类不变,原实现类可变

好,我来用最通俗的方式 ,用角色扮演 + 场景对话不讲术语,让你彻底明白「依赖倒置原则」和「开闭原则」的区别。


🎭 场景:你是老板(高层),你要雇人做事


一、【依赖倒置原则】像是:

你(老板)不直接招某个具体的人,而是找中介说:我要一个会画画的人

  • ✅ 你不管是"张三"来画,还是"李四"来画;
  • ✅ 你只要求:对方能实现 画画() 这个动作;
  • ✅ 换人不需要你改流程。

关键词:我不依赖"某个人",我只依赖"会画画"这个能力。


二、【开闭原则】像是:

你以后要多做几种事,比如画画 + 写代码 + 做策划,你不重写流程,而是新增岗位

  • ✅ 原来的"画画流程"不动;
  • ✅ 新建一个"写代码岗位",加入就行;
  • ✅ 老流程一点不动。

关键词:我不动旧流程,只新增角色就能扩展能力。


🧠 总结用词(极简版)

术语 本质 类比
依赖倒置原则 "我不找人,我找能力" 老板说:我只找'会干活的人'
开闭原则 "我不改旧流程,我加新流程" 老板说:原来只画画,现在再加个写代码的人

🧪 用 Python 再演一遍

✅ 依赖倒置原则

python 复制代码
class Person(ABC):
    @abstractmethod
    def work(self): pass

class Painter(Person):
    def work(self): print("🎨 画画")

class Coder(Person):
    def work(self): print("💻 写代码")

class Boss:
    def assign_work(self, p: Person):
        p.work()

# 老板不关心你是谁,只管你会不会 work()
boss = Boss()
boss.assign_work(Painter())  # 输出:🎨 画画
boss.assign_work(Coder())    # 输出:💻 写代码

你看,Boss(高层)只看接口,不依赖具体类


✅ 开闭原则

python 复制代码
class Person(ABC):
    @abstractmethod
    def work(self): pass

class Painter(Person):
    def work(self): print("🎨 画画")

# 以后加新需求,不改 Painter,只加新类
class Coder(Person):
    def work(self): print("💻 写代码")

原来的 Painter 类没动,新增 Coder 类就能拓展功能,开闭原则 ✅


🎯 最后用最简单话讲两者区别

问题 依赖倒置原则解决 开闭原则解决
"我要和谁合作?" 和接口合作,不直接找具体人
"我以后要加功能怎么办?" 不改原代码,扩展新模块
"我要换人怎么办?" 换人不换流程(只要接口兼容)

如果你还迷糊,不妨这样记:

依赖倒置 = 找能力;开闭原则 = 加人干新活。


需要我再用一个小游戏、支付系统、或微服务场景帮你「角色扮演实战」吗?讲起来会更容易理解~

相关推荐
步行cgn10 天前
OCP开闭原则:面向对象设计的核心原则
java·开发语言·开闭原则
Sam_Deep_Thinking20 天前
聊聊开闭原则,以及它在Spring里的样子
java·后端·spring·程序员·开闭原则
艾德克斯1 个月前
从OCP APAC Summit 2026看AI数据中心供电架构演进与测试挑战
人工智能·ai·架构·数据中心·开闭原则·供电测试
冷咖啡离 我的笨笨1 个月前
用最简单的例子,从最简单的设计开始,重构着讲解设计原则与模式——从DIP中“倒置”的含义说接口的正确使用
python·重构·依赖倒置原则
Freak嵌入式2 个月前
版本混乱 / 依赖缺失?uPyPi:MicroPython 版 PyPI,彻底解决库管理混乱
linux·服务器·数据库·单片机·嵌入式硬件·性能优化·依赖倒置原则
嘉泰姆半导体官方2 个月前
CXDC65209B LNB供电与控制稳压器 8V-16V输入 4种输出电压 6ms快速OCP DiSEqC
开闭原则
Freak嵌入式2 个月前
MCU 低功耗模式解析:时钟门控、电源门控、深度休眠
人工智能·python·单片机·嵌入式硬件·开源·依赖倒置原则·micropython
咖啡八杯2 个月前
设计模式中的原则
设计模式·接口隔离原则·里氏替换原则·开闭原则·合成复用原则·单一职责原则
腾科IT教育2 个月前
Oracle认证怎么选?2026年OCP/OCM报考指南
linux·运维·华为认证·hcie·开闭原则·datacom
VOOHU-沃虎2 个月前
RJ45到底选DIP还是SMD?封装对产线、返修与机械强度的影响
依赖倒置原则