知识卡片

继承真正的价值,是把公共契约收拢到最合适的抽象层级,而不只是省几行代码

专业/工作

内容

继承常被简单理解为”减少重复代码”的工具,但更准确的说法是:它捕获了一组类之间共同成立的行为约定(前置条件、后置条件这类”契约”),并把这份约定安放在继承树里最高、最合适的那个层级——子类只需要按需重写具体实现,调用方甚至不需要知道自己拿到的对象具体是继承树里的哪一层,直接调用约定好的操作就行。这解释了为什么”继承结构设计得好不好”直接决定了它能省下多少重复:结构设计得好,公共契约会自然沉淀到顶层;结构设计得差,重复就会散落在各个子类里,继承带来的好处也就名存实亡。这提示一个衡量继承结构质量的具体问题:不是”这些类有没有继承关系”,而是”公共的行为约定,有没有被安放在唯一、最合适的那一层”。

参考来源

《架构之美》第13章《软件架构:面向对象与面向函数》