Skip to content
阅读进度

接口、继承和多态怎样让实现可替换? ​

返回 Java 与并发 目录

标准回答 ​

接口定义“能做什么”,实现类决定“怎么做”;业务持有接口类型,通过多态调用不同实现。继承复用和扩展已有类型,但不应代替清晰的职责划分。

关键机制 ​

  • 设计 DeviceTransport 接口,可以有 BleTransport、WifiTransport 和 FakeTransport。上层无需知道底层连接细节。
  • 通过构造参数注入依赖,方便替换和测试;实现约定应包含错误、取消、线程与资源释放行为。
  • 优先用组合表达可替换部件,确实符合 is-a 关系和父类契约时再考虑继承。

通俗例子 ​

设备页面只调用 DeviceRepository.loadDevices。真实运行使用网络实现,本地验证使用内存实现,页面与 ViewModel 不需要跟着改。

易混淆点 ​

把一大坨方法搬进接口,不会自动变成好架构。接口仍应围绕单一职责,并避免泄漏具体协议细节。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。