多继承 vs 多接口:对“正交性”的影响
副标题 / 摘要 多继承能直接复用实现,但也容易破坏正交性;多接口更强调行为组合。本文对比两者的工程影响。 目标读者 使用面向对象语言的开发者 关注可维护性与复杂度的工程师 需要设计可组合 API 的团队 背景 / 动机 多继承能快速复用代码,但容易引发菱形继承等复杂问题。 多接口更安全,但需要通过组合实现行为。 核心概念 多继承:继承多个实现 多接口:继承多个行为契约 正交性:特性可以独立组合而不相互干扰 实践指南 / 步骤 优先用接口表达能力 复用实现时优先组合而非继承 避免菱形继承与复杂层级 用测试保证组合行为正确 可运行示例 interface Loggable { void log(String msg); } interface Auditable { void audit(String msg); } class Service implements Loggable, Auditable { public void log(String msg) { System.out.println("log:" + msg); } public void audit(String msg) { System.out.println("audit:" + msg); } public static void main(String[] args) { Service s = new Service(); s.log("hello"); s.audit("hello"); } } 解释与原理 多接口强调能力组合,避免继承链带来的隐式耦合。 多继承虽然更直接,但容易破坏正交性并增加维护成本。 ...