dev.to | 📄 原文链接 | 2026-10-28 收录

我终于搞懂了里氏替换原则

来源:dev.to — 2026-10-26

📋 概述

SOLID 讲到 L,作者说这是第一个真的会让人栽跟头的原则,而他自己在生产里发过那个 bug,还不止一次。他把 1987 年那段像数学论文的定义翻译成一句人话:父类能用的地方,任何子类都必须也能用,不能有惊喜,不能加 instanceof 判断。例子不用正方形和矩形,改用支付与退款:几种支付方式各自能扣款和退款,调用方从不关心拿到哪一种。后来加了礼品卡,能扣款,但法务说不能退现金,于是子类里写了 throw new Error('not supported')。TypeScript 编译通过,PR 被合了。三周后产品召回,客服跑批量退款脚本,A2 抛异常,A3 干脆没被处理,用户直接写了一星差评。

🔑 核心要点

💡 金句

“If you remember one sentence: a subclass may do more than its parent, never less.”
译:如果只记一句话:子类可以比父类做得多,绝不能做得少。
← 返回 dev.to 首页