Skip to Content
面试题库Design Patterns[面试题] 适配器模式和装饰器模式有什么区别?

[面试题] 适配器模式和装饰器模式有什么区别?

📖 版块 A:知识讲解版 (温故知新)

  • 适配器模式

    1. 目标是让原本接口不兼容的两个系统或类能够协同工作。
    2. 更关注“转换接口”。
  • 装饰器模式

    1. 目标是在不修改原始类的前提下,为对象动态增加功能。
    2. 更关注“增强能力”。
  • 两者区别

    1. 适配器解决的是“能不能接上”。
    2. 装饰器解决的是“功能能不能叠加”。
    3. 适配器通常强调兼容旧接口;装饰器通常强调增强现有行为。

🎤 版块 B:面试实战版 (高手逐字稿)

Q:适配器模式和装饰器模式有什么区别?

💬 高手逐字稿

适配器模式和装饰器模式,虽然表面上都可能是“包一层对象”,但它们面对的问题完全不一样。

适配器模式解决的是接口不兼容问题。也就是说,老系统能提供某种能力,但它暴露出来的接口和新系统期待的接口对不上。这时候我们不想改老代码,就在中间加一个适配器,把旧接口翻译成新接口能接受的样子。

装饰器模式解决的不是兼容问题,而是增强问题。原始对象本来就能用,只是我们想在不改它源码的前提下,再给它叠加一些新能力。

所以最简单的区分方式是:

  • 适配器:本来接不上,现在把它接上;
  • 装饰器:本来能跑,现在给它加点能力。

如果再落到实际语境里:

  • 老 SDK 接口和你内部标准接口不一致,用适配器;
  • 一个流对象想加缓冲、加编码、加统计,用装饰器。

所以这两个模式不要看结构像,就误以为可以互换,它们解决的是两类完全不同的设计问题。

最后更新于:
⏱️

登录后开始阅读

当前 MVP 版本只开放邮箱密码登录注册。完成登录后即可进入面试题内容。

还没有账号?先去注册