知识卡片

统一根类的继承体系让打造极简代理类变得困难

普通读书笔记卡 · 1816.g

内容

当语言里一切类型最终都继承自同一个根类时,想造一个只代理两三个方法的轻量代理类会变得很别扭:继承目标类会带上它全部的方法而不只是想代理的那几个,绕开继承改用组合又会因为根类本身提供的大量基础方法被自动继承而达不到只有两个方法的效果。这暴露了一个更深的设计取舍:让一切都统一在同一个继承体系下确实简化了语言的心智模型,但也让造一个极简、只暴露有限能力的对象这件事变得比想象中更难做到。

参考来源

- 位置:《架构之美》第14章《重读经典》14.3节《问题》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0279.xhtml) - 结论依据:原文明确"如果我们确实想要一个代理类,让它只作为少数方法的代理,那么事情只会变得更复杂。原因与缺少真正的抽象类有关。代理类可能是我们想代理的那个类的一个子类……它会继承被代理类的所有方法,而不仅是我们想代理的那些方法……由于所有东西都是对象,代理类会继承Object类的所有方法"。 - 原始内容:如果我们确实想要一个代理类,让它只作为少数方法的代理,那么事情只会变得更复杂。原因与缺少真正的抽象类有关……理想情况下,我们希望代理两个方法的类就只有两个方法,但我们不清楚如何才能做到这一点。这个类会带有从它的祖先那里继承来的所有方法。