知识卡片

"继承该不该用"争论了几十年,答案不是非黑即白,而是"用得好不好"

专业/工作

内容

20世纪八九十年代面向对象刚兴起时,继承被当作核心卖点,早期的C++教材直接教你”通过继承来明确共性”;但20年后,《设计模式》和《Effective Java》这类经典著作却反复告诫”优先用组合而非继承”。这看起来像是行业推翻了之前的共识,但更准确的解读是:继承本身没有变坏,变化的是大家对”什么才算用得好”的认识越来越细——早期人们只看到继承能省代码的好处(比如让Windows编程从繁琐的窗口类样板代码里解放出来),后来才逐渐意识到滥用继承会带来脆弱的基类、过度耦合等代价。这提示一个看待技术圈”风向反转”的心态:与其把新旧建议的冲突理解成”以前错了、现在对了”,不如理解成”我们对同一个工具的利弊认识得更全面了”——工具本身很少是非黑即白的,好坏往往取决于具体的使用方式。

参考来源

《架构之美》第14章《重读经典》