知识卡片

判断该用继承还是桥梁模式的经验法则

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

内容

继承的强侵入性:父类定义某方法,所有子孙类被迫拥有它,子类重写会牵连更深层子类, 改动风险随继承链长度线性放大。桥梁模式用弱关联替代——把可能变化的方法放进实现化角色, 子类要用时”搭桥”过去获得,不用不受影响。发散:经验法则是明确不变的行为用继承,不确定 是否变化的就当作会变化交给桥梁模式,这与[[桥梁模式的使用场景与注意事项]]“继承层次达N层 就该考虑桥梁模式”相互印证。

参考来源

- 位置:《设计模式之禅(第2版)》第29章《桥梁模式》29.4节(源文件:_epub-src/text/part0134.html) - 结论依据:原文用Father/Son/GrandSon三层继承的例子说明继承的强侵入性风险,并总结"对于比较明确不发生变化的,则通过继承来完成;若不能确定是否会发生变化的,那就认为是会发生变化,则通过桥梁模式来解决,这才是一个完美的世界"。 - 原始内容:即强侵入,父类有一个方法,子类也必须有这个方法……Son要重写父类的这个方法,他敢做吗?绝对不敢!……桥梁模式描述了类间弱关联关系……Son子类要拥有这个方法很简单,桥梁搭过去,获得这个方法……对于比较明确不发生变化的,则通过继承来完成;若不能确定是否会发生变化的,那就认为是会发生变化,则通过桥梁模式来解决。