里氏替换原则,育儿模型
Source: Dev.to

也许只是我一个人的感觉,但大多数软件原则听起来很抽象,直到你意识到它们已经在现实生活中存在 🌱
在学习 SOLID 原则 时,我注意到最直观的例子之一是 里氏替换原则(LSP)——面向对象设计的核心概念——它出奇地贴合 育儿和家庭期望 👨👩👧👦
🔍 LSP 的说法(通俗版)
在软件中,LSP 表述为:
如果类 B 是类 A 的子类型,则类型为 A 的对象应该可以被类型为 B 的对象替换,而不会破坏客户端所期望的行为。
通俗来说:
如果你在更高层次作出了承诺,那么每一种具体情况都必须能够兑现它 🤝
现在把以下词替换:
- class → child 👶
- client → family 🏠
突然之间,这个原则变得非常有人情味。
👪 父母、承诺与抽象
- 在软件中,基类定义了期望。
- 在家庭中,父母定义了规则和职责。
问题出现于当父母说:
“我所有的孩子都必须做 X。”
…但并不是所有孩子都真的有能力完成 X。
当这种情况发生时,问题不在孩子,而在 期望本身。 ⚠️
这正是软件中基类定义了并非所有子类都能安全支持的行为时的情形。
🤥 当父母“说谎”
在编程中,我们说一个抽象在说谎,指它承诺了并非普遍有效的行为。
在家庭中,这表现为:
- 期望每个孩子以相同的方式成功 🎯
- 不顾年龄或能力分配相同的责任 🧱
- 因不符合孩子实际情况的期望而惩罚他们 🚫
在软件中,结果是行为被破坏。
在家庭中,则是挫败感、怨恨和持续冲突 💥
🧠 共同的教训
无论是设计软件还是抚养孩子:
如果有人不断地说“我做不到”,那么承诺很可能是错误的。
LSP 教会开发者向上层看,而不是向下层找原因——修正合同,而不是指责实现 🔄
🌟 最后思考
强大的系统——无论是技术的还是人的——都建立在明确的期望、诚实的承诺以及对差异的尊重之上。
- 当抽象真实可靠时,替换才是安全的。
- 当期望公平合理时,关系才会健康 💚