代理模式 vs 适配器模式

代理模式 vs 适配器模式(面试极简版,一面高频)

核心一句话区分:适配器是「改接口、做兼容」;代理是「加控制、做增强」

一、核心定义&目的

1. 适配器模式(Adapter)

  • 作用:转换接口 ,让两个接口不匹配的类正常协作
  • 场景:老接口/第三方接口、格式不一样,我要"转一下"才能用
  • 关键词:兼容、转换、适配、接口不一致

2. 代理模式(Proxy)

  • 作用:控制访问、增强功能,不修改原类代码,在调用前后加逻辑
  • 场景:权限、日志、缓存、延迟加载、远程调用、事务
  • 关键词:控制、拦截、增强、代理访问、功能附加

二、直观例子(好记)

适配器

手机Type-C 耳机,插老式3.5mm圆孔 → 用转接头

两个接口不一样,转接口才能用 = 适配器

代理

你找明星办事,不直接联系本人,先找经纪人

经纪人帮你拦截、安排、传话、控节奏 = 代理


三、关键区别(面试直接背)

  1. 意图不同

    • 适配器:解决接口不兼容,让异类接口统一
    • 代理:控制/增强目标对象行为,接口完全不变
  2. 接口是否一致

    • 适配器:目标接口和原接口不同,要做转换
    • 代理:代理类和被代理类接口完全一致,对外透明
  3. 使用时机

    • 适配器:已有类、接口不匹配,事后补救兼容
    • 代理:主动设计,前置做访问控制/功能增强

四、Java 常见落地(面试加分)

适配器

  • IO 流:InputStreamReader(字节流→字符流)
  • 老系统接口改造、第三方SDK接口适配

代理

  • 静态代理、JDK动态代理(接口代理)、CGLIB代理
  • Spring AOP、MyBatis Mapper代理、延迟加载、权限校验

五、一句话面试标准答案(直接口述)

适配器模式主要用来转换不兼容的接口,解决接口匹配问题;代理模式接口保持一致,主要用来对目标对象做访问控制、功能增强,比如日志、权限、缓存等。

相关推荐
老码观察2 天前
设计模式实战解读(八):代理模式——控制访问的隐形中间层
设计模式·代理模式
青山师3 天前
动态规划算法深度解析:从状态转移方程到工业级优化
数据结构·算法·面试·动态规划·代理模式·java面试
老码观察3 天前
设计模式实战解读(七):适配器模式——让不兼容的接口无缝协作
java·设计模式·适配器模式
Yana.nice7 天前
nginx的四种代理模式
运维·nginx·代理模式
陈辛chenxin7 天前
【数据挖掘01】相似度算法大全(万字讲解)
算法·数据挖掘·代理模式
likerhood8 天前
设计模式 · 代理模式(Proxy Pattern)java
java·设计模式·代理模式
nnsix12 天前
设计模式 - 适配器模式 笔记
笔记·设计模式·适配器模式
阿Y加油吧13 天前
两道字符串经典题复盘:最长回文子串 & 最长公共子序列
代理模式