静态代理和动态代理

一、代理模式的核心本质

无论静态代理还是动态代理,本质都是 "解耦核心业务与非核心功能":

  • 目标对象:专注核心业务(如房东出租房子、支付系统扣款);
  • 代理对象:负责非核心功能(如身份验证、日志记录、事务控制);
  • 用户视角:只与代理对象交互,感知不到目标对象的存在,但能享受到 "非核心功能 + 核心业务" 的完整服务。

二、静态代理:提前定制的 "专属中间人"

1. 核心逻辑

静态代理是编译期绑定特定目标对象与专属代理逻辑,代理类提前编写完成,调用时按 "固定路径" 执行的一对一代理模式。简单来说,就是为某个特定业务定制一个专属代理,代理逻辑和目标对象强绑定,无法复用。

2. 执行流程(逻辑层面)

  1. 预设绑定:提前确定 "代理对象 - 目标对象 - 专属代理逻辑" 的固定组合(如为 "租房业务" 定制 "中介代理",绑定 "身份验证 + 签合同" 的专属逻辑);
  2. 调用执行:用户调用代理对象 → 代理执行专属前置逻辑 → 代理调用目标对象核心逻辑 → 代理执行专属后置逻辑 → 返回结果;
  3. 扩展限制:新增业务需重新编写对应的代理类和代理逻辑,无法复用已有规则。

3. 适用场景

适合业务场景简单、目标对象固定且无需频繁扩展的场景,比如小型系统的单一业务增强(如仅为 "订单查询" 添加权限校验)。

4. 核心特点

  • 优点:逻辑简单、直观易懂,开发和维护成本低;
  • 缺点:耦合度高、代码冗余,新增业务需重复编写代理逻辑。

三、动态代理:灵活适配的 "通用模板人"

1. 核心逻辑

动态代理是先定义通用代理规则,运行时为任意符合条件的目标对象动态生成代理类,调用时按统一规则执行的一对多代理模式。简单来说,就是先制定一套通用的增强规则,后续所有业务只需绑定该规则,即可自动生成代理,无需重复编写逻辑。

2. 执行流程(逻辑层面)

  1. 制定规则:定义一套与具体业务无关的通用代理规则(如 "所有业务都先做身份验证,后记录操作日志");
  2. 动态匹配:需要代理某个业务时,将目标对象与通用规则绑定,运行时自动生成临时代理对象;
  3. 调用执行:用户调用临时代理对象 → 代理执行通用前置逻辑 → 代理调用当前绑定目标对象的核心逻辑 → 代理执行通用后置逻辑 → 返回结果;
  4. 扩展优势:新增业务只需实现统一接口,绑定已有通用规则即可,无需修改代理逻辑。

3. 适用场景

适合多业务统一管控、需频繁扩展的复杂场景,比如电商系统的 "支付 / 退款 / 充值" 统一加日志、Spring AOP 的切面增强等。

4. 核心特点

  • 优点:耦合度低、逻辑复用性强,扩展灵活;
  • 缺点:逻辑稍抽象,需理解 "运行时动态生成代理" 的底层思路。

四、静态代理 vs 动态代理:核心对比

维度 静态代理 动态代理
代理类创建时机 编译期(提前编写) 运行期(动态生成)
规则与对象关系 一对一(专属规则绑定特定对象) 一对多(通用规则适配任意对象)
调用逻辑流转 固定路径(专属逻辑 + 固定核心逻辑) 动态路径(通用逻辑 + 当前核心逻辑)
扩展成本 新增业务需新增代理类 / 规则 新增业务仅需绑定已有规则
相关推荐
只吃不吃香菜19 小时前
Windows 下基于 YAML 规则的指定域名分流:以哔哩哔哩为例
网络·网络协议·计算机网络·网络安全·代理模式
zhongjunyao4 天前
Spec-Driven Development (SDD): The Definitive 2026 Guide
javascript·spring boot·python·eclipse·代理模式
FfHUCisI10 天前
Golang - 贪心算法 — 局部最优推导全局最优
贪心算法·golang·代理模式
雾喔12 天前
算法练习5
算法·代理模式
q5673152315 天前
人工智能训练数据采集:稳定代理IP高并发方案全解析
人工智能·爬虫·网络协议·tcp/ip·代理模式·代理ip
wuqingshun3141591 个月前
什么是代理模式?一般用在什么场景?
java·mysql·代理模式
我登哥MVP1 个月前
走进 Gang of Four 设计模式:代理模式
设计模式·代理模式
折哥的程序人生 · 物流技术专研1 个月前
Java 23 种设计模式:从踩坑到精通 | 番外:代理 vs 装饰器 —— Spring AOP 到底用了哪个?
java·代理模式·装饰器模式·java面试·java设计模式·springaop·从踩坑到精通
初学者,亦行者1 个月前
算法设计与分析3:贪心法 - 求解最短路径问题(TSP)
算法·代理模式
2501_916007471 个月前
iPad 怎么抓包 从代理模式到暴力抓包的操作方法
android·ios·小程序·uni-app·代理模式·iphone·ipad