概述
为其它对象提供一种代理以控制这个对象的访问。
类图
角色
- 抽象主题Subject
- 代理主题ProxySubject
- 真实主题 Real Subject
示例
Subject.java
1 | public interface Subject{ |
RealSubject.java
1 | public class RealSubject implements Subject{ |
ProxySubject.java
1 | public class ProxySubject implements Subject { |
一个代理主题类可以代理多个真实主题、具体代理哪个真实主题是由高层的应用模块决定的,可以通过代理类的构造函数传递被代理者。
应用
种类
- 远程代理
- 虚拟代理
- 保护代理
- 缓存代理
- 同步代理
- 智能引用
优点
- 职责清晰
- 高扩展性
- 智能化
使用场景
代理模式应用非常广泛,达到一个系统框架、企业平台,小到事务处理、代码片段,随处可见代理模式的应用。例如,Java Rmi 的远程调用就是一种代理模式的应用,现在流行的AOP也是通过代理模式实现的。