开闭原则与依赖倒置原则区别:原类不变,新增类(功能)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 类就能拓展功能,开闭原则 ✅


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

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

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

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


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

相关推荐
艾利克斯冰1 天前
Java设计模式详解-七大设计原则(持续更新中)
设计模式·uml·开闭原则
计算机安禾15 天前
【c++面向对象编程】第37篇:面向对象设计原则(一):单一职责与开闭原则
开发语言·c++·开闭原则
S1998_1997111609•X24 天前
Phash的系统通信工程及恶意注入污染蜜罐轮替探测阻断正常通讯协议系统的dog 通用原理及行为阻击至联合国管理清理全栈
安全·百度·哈希算法·量子计算·开闭原则
S1998_1997111609•X1 个月前
哈希树函数洪水泛滥污染孪生镜像导致生物量子信息泄露以钩子而爬虫植入ssd探测
爬虫·网络协议·缓存·哈希算法·开闭原则
S1998_1997111609•X1 个月前
电容〇解临界过流恶意注入污染寄生的边缘锯齿噪声污染孪生
安全·百度·哈希算法·量子计算·开闭原则
S1998_1997111609•X1 个月前
恶意烧录级系统固件开源á进行函数值哈希泛滥污染孪生以钩子而爬虫合规系统的性能指标体系技术应用内存
安全·百度·哈希算法·量子计算·开闭原则
S1998_1997111609•X1 个月前
元组件HCG&&单元量泄露数据爬虫植入syatem,造成系统ioc dark and agent of China gov 的犯罪心理学依据行为
网络协议·安全·百度·哈希算法·开闭原则
S1998_1997111609•X1 个月前
论述情况盀导致系统应用通信通讯协议被恶意注入污染蜜罐开元盀用于非法侵入爬虫植入ssd的通用技术原理
网络·网络协议·百度·哈希算法·开闭原则
S1998_1997111609•X1 个月前
论当今社会主义与人文关怀人格思想下的恶意仿生注入污染蜜罐描述进行函数值非法侵入爬虫的咼忄乂癿〇仺⺋.
数据库·网络协议·百度·ssh·开闭原则
S1998_1997111609•X1 个月前
恶意注入污染蜜罐HDMI进程函数值进行封禁垃圾蠕虫仓蟲的轮系依据行为戆直㞢仓shell token
数据库·爬虫·网络协议·百度·开闭原则