知识卡片

子类个性过强时应考虑断开继承关系

普通读书笔记卡 · 1983.a.3

内容

应用[[里氏替换原则的两种定义]]时应避免子类”个性”过强(父类没有的独特行为)。个性突出就 陷入两难:当父类用会抹杀子类能力,单独当具体类型用又会让代码依赖具体子类型、耦合难维护。 发散:若某子类频繁被以具体类型引用而非通过父类/接口,往往说明这个继承关系从一开始就不该 用继承,改用组合更合适。

参考来源

- 位置:《设计模式之禅(第2版)》第2章《里氏替换原则》(源文件:_epub-src/text/part0010.html) - 结论依据:原文总结"在项目中,采用里氏替换原则时,尽量避免子类的'个性'",并指出个性过强会导致"把子类当做父类使用,子类的'个性'被抹杀"与"把子类单独作为一个业务来使用,则会让代码间的耦合关系变得扑朔迷离"两种两难局面。 - 原始内容:在项目中,采用里氏替换原则时,尽量避免子类的"个性",一旦子类有"个性",这个子类和父类之间的关系就很难调和了,把子类当做父类使用,子类的"个性"被抹杀——委屈了点;把子类单独作为一个业务来使用,则会让代码间的耦合关系变得扑朔迷离——缺乏类替换的标准。