侧边栏壁纸
  • 累计撰写 8 篇文章
  • 累计创建 0 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

设计模式七大原则(趣味版)

大锤灬
2026-01-13 / 0 评论 / 0 点赞 / 10 阅读 / 0 字

写给不想睡着的你 🛋️

🤔 设计模式是个啥?

简单说,设计模式就是前辈们踩过的坑总结出来的避坑指南

就像你妈告诉你出门带伞,不是她闲得慌,是因为她淋过太多次雨了。设计模式也一样——都是无数程序员熬夜、掉头发、被产品经理折腾之后,含泪写下的血泪经验。

💡 核心思想:别重复造轮子,前人的智慧拿来用就好。

🏆 七大原则速览表

原则

一句话总结

生活类比

开闭原则

可以加功能,别改老代码

房子可以加阳台,别拆承重墙

单一职责

一个类只干一件事

厨师就做菜,别让他顺便修马桶

里氏代换

儿子能替老爸干活

太子能代皇帝上朝

依赖倒转

依赖抽象,不依赖具体

招聘要会开车的,不是只会开宝马的

接口隔离

接口要小而精

遥控器别做成飞机仪表盘

合成复用

能组合就别继承

要轮子就买一个装上,别生个轮子儿子

迪米特法则

少管闲事

点外卖不需要知道厨师的血型

1️⃣开闭原则:只加不改原则

🎬 场景还原

产品经理:我们要加个饼状图!

菜鸟程序员:改改改!把原来的代码全改一遍!

老司机程序员:加个新类就行,原来的代码一行不动。

🍔 汉堡店的例子

想象你开了一家汉堡店:

  • 错误做法:每次出新品,就把菜单撕了重写,厨房流程全改

  • 正确做法:新品?加张新卡片到菜单上,厨师学个新配方就行

🎯 记住:代码就像古董,能不动就不动。加新功能?另起炉灶!

2️⃣ 单一职责原则:专业的事交给专业的人

🎬 场景还原

老板:小王啊,你不是会写代码吗?顺便把公司的马桶修一下。

小王:???

🏥 医院的例子

  • 错误做法:一个全能医生,看病、做手术、扫地、收费、开救护车

  • 正确做法:内科医生看内科,外科医生做手术,护士护理,保洁打扫

🎯 记住:一个类就像一个员工,职责越单一,越好管理,出了bug也好找!

3️⃣ 里氏代换原则:虎父无犬子

🎬 场景还原

皇帝生病了,太子代替上朝。

大臣们:行,太子也是龙的传人,该有的权力都有,能处理朝政。

🐕 动物世界的例子

任何需要动物的地方,狗和猫都能顶上!不管是狗是猫,都能叫!

🎯 记住:儿子必须能干老爸能干的所有事。不然你这继承就是乱认爹!

4️⃣ 依赖倒转原则:面向接口编程

🎬 场景还原

招聘启事:

  • ❌ 招一个只会开奔驰S600的司机

  • ✅ 招一个会开车的司机

第一种写法,万一老板换车了呢?司机不会开?重新招人?

🎯 记住:依赖抽象,不依赖具体。就像USB接口,不管你插U盘还是鼠标,接口是一样的!

5️⃣ 接口隔离原则:接口要苗条

🎬 场景还原

你只想看电视,结果遥控器上有200个按钮,包括:发射导弹、启动核反应堆、召唤神龙

你:我就想换个台啊!😭

🎯 记住:接口就像菜单,别把法餐、川菜、日料、烧烤全写一张纸上。分开写,各取所需!

6️⃣ 合成复用原则:能借就借,别生

🎬 场景还原

你需要一辆车:

  • 继承思维:我爸是车厂老板,我继承他,我就有车了!

  • 组合思维:我去租一辆、买一辆、借一辆

🧩 乐高积木的例子

继承就像:你想要红色的车,结果你爸说我只有蓝色的基因,你也得是蓝色。

组合就像:你有一盒乐高,想要什么颜色就拿什么颜色的积木,随意搭配!

🎯 记住

  • is-a(是一个)用继承:狗动物

  • has-a(有一个)用组合:车轮子

7️⃣ 迪米特法则:社恐福音

🎬 场景还原

你点了份外卖:

  • ❌ 你需要知道:厨师叫什么、他家住哪、他老婆是谁、他用什么牌子的锅

  • ✅ 你只需要知道:外卖能送到就行

🎯 记住:只跟直接朋友说话,别跟朋友的朋友的朋友打交道。社恐程序员狂喜!

🎁 总结:七大原则的终极口诀

开闭原则记心间,扩展开放改闭关

单一职责不贪多,一个类来一件活

里氏代换讲继承,子替父来程序通

依赖倒转靠抽象,接口编程是正道

接口隔离要精简,臃肿接口是灾难

合成复用少继承,组合搭配更轻松

迪米特让少说话,低耦合来人人夸

🤷 最后的最后

这七大原则不是铁律,而是指导思想。就像交通规则一样:

  • 大部分时候要遵守

  • 偶尔可以灵活处理(比如救护车可以闯红灯)

  • 但别为了灵活而灵活(别自己假装是救护车)

记住:原则是用来帮你写出更好代码的,不是用来显摆的。如果为了遵循原则把简单问题复杂化,那就是过度设计,比不遵循原则还可怕!

🎯 终极建议:先能跑起来,再慢慢优化。完美主义是最大的敌人!

Happy Coding! 🚀

愿你的代码没有bug,头发永远茂密~ 💇

0

评论区