1. 模式结构
2. 角色
(1) Subject(抽象主题角色)
(2) Proxy(代理主题角色)
(3) RealSubject(真实主题角色)
3. 常见代理模式
远程代理:
将网络的细节隐藏起来,客户完全可以认为被代理的远程业务对象是局域的而不是远程的
虚拟代理:
内存节省技术,占用大量内存或处理复杂的对象将推迟到使用它的时候才创建
动态代理:
对于多个真实的主题角色,只需要提供一个动态代理类,动态代理类无须维护一个与真实主题角色的引用
Copy-on-Write代理:
保护代理
缓冲代理
防火墙代理
同步化代理
智能引用代理
4. 特点
对象结构型模式
给某一个对象提供一个代理,并由代理对象控制对原对象的引用
通过代理主题角色聚合真实主题角色,实现对真实主题角色的控制(安全代理)或功能加强(日志代理)
5. 应用
Java RMI
EJB
Spring的AOP(动态代理)