当前位置: 首页 > news >正文

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

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


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


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

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

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

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


二、【开闭原则】像是:

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

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

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


🧠 总结用词(极简版)

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

🧪 用 Python 再演一遍

✅ 依赖倒置原则

class Person(ABC):@abstractmethoddef work(self): passclass 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(高层)只看接口,不依赖具体类


✅ 开闭原则

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

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


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

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

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

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


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

相关文章:

  • 算法篇(九)【滑动窗口】
  • 《筑牢防线:全方位守护移动应用免受逆向侵扰》
  • linux下如何在一个录目中将一个文件复制到另一个录目,删除目录
  • A2A 协议与 MCP 协议:智能代理生态系统的双轮驱动
  • 组件通信-自定义事件
  • Dify 安装 使用
  • STM32 ZIBEE DL-20 无线串口模块
  • Linux Netlink机制:现代网络通信的核心
  • C++ set和map
  • 5月2日日记
  • 普通IT的股票交易成长史--20250502 突破(1)
  • 动态规划算法精解(Java实现):从入门到精通
  • [HOT 100] 0124. 二叉树中的最大路径和
  • 从零开始讲DDR(8)——AXI 接口MIG 使用(1)
  • 滥用绑定变量导致Oracle实例宕机
  • nt!NtReplyWaitReceivePortEx函数分析之nt!LpcpMoveMessage拷贝csr_api_msg
  • NV162NV172美光固态颗粒NV175NV188
  • 010302-oss_反向代理_负载均衡-web扩展2-基础入门-网络安全
  • AI日报 · 2025年05月02日 | 再见GPT-4!OpenAI CEO 确认 GPT-4 已从 ChatGPT 界面正式移除
  • Linux——进程终止/等待/替换
  • 朝中社:美在朝鲜半岛增兵将进一步增加其本土安全不确定性
  • 加拿大总理将赴美同特朗普会晤,重点谈贸易压力
  • 全文丨中华人民共和国传染病防治法
  • “80后”杨占旭已任辽宁阜新市副市长,曾任辽宁石油化工大学副校长
  • 中国海油总裁:低油价短期影响利润,但也催生资产并购机会
  • 白云山一季度营收净利双降,此前称今年将挖掘盘活自身资源