代理模式(Proxy Pattern):控制对象访问的中间层
代理模式是结构型设计模式的一种,核心思想是为目标对象提供一个代理对象,通过代理对象控制对目标对象的访问。代理模式在不修改目标对象的前提下,可对其功能进行扩展(如增强、限制、监控等),广泛应用于远程调用、权限控制、日志记录等场景。
代理模式的核心结构

代理模式包含三个核心角色,通过分工实现对目标对象的访问控制:
- 抽象角色(Subject):
声明目标对象和代理对象的共同接口(或抽象类),确保代理对象可替代目标对象。 - 真实角色(Real Subject):
被代理的目标对象,负责实现核心业务逻辑。 - 代理角色(Proxy):
实现抽象角色,内部持有真实角色的引用,负责控制对真实角色的访问,并可在调用前后添加额外操作(如日志、权限校验)。
静态代理(Static Proxy)
静态代理是最简单的代理模式实现,代理类在编译期就已确定,与目标类实现相同的接口。
实现方式
- 定义抽象接口(抽象角色)。
- 真实角色实现接口,提供核心业务逻辑。
- 代理角色实现同一接口,内部持有真实角色的引用,在调用真实角色方法前后添加扩展逻辑。
代码示例
以 “服装工厂代理销售” 为例:

