Proxy(代理)-对象结构型模式 - 设计模式
1. 意图
为其它对象提供一种代理以控制对这个对象的访问.
2. 别名
Surrogate
4. 适用性
远程代理(Remote Proxy)为一个对象在不同的地址空间提供局部代表.
虚代理(Virtual Proxy) 根据需要创建开销很大的对象.
保护代理(Protection proxy) 控制对原是对象的访问.
智能指针(Smart Reference)
远程(Remote)代理: 为一个位于不同地址空间的对象提供一个局域代表对象.
虚拟(Virtual)代理: 根据需要创建一个资源消耗较大的对象. 使此对象只有在真正需要时才真正被创建.
Copy_on_Write代理: 即写时复制技术. 它是虚拟代理的一种. 把复制拖延到真正需要的时候才进行.
保护(Protect or Access)代理: 控制对一个对象的访问. 需要的时候可以给不同的用户提供不同的权限.
Cache代理: 为某一个目标操作的结果提供临时的存储空间.
防火墙(Firewall)代理: 保护目标. 不让恶意用户接近.
同步化(Synchronization)代理: 例如在多线程的时候.让多个线程访问对象. 智能引用(Smart Reference)代理: 见智能指针.
--《Java与模式》
5. 结构
6. 参与者
Proxy
----保存一个被代理的实体的引用.通过该引用控制实际对象.
----提供一个与Subject相同的接口.这样代理就可以代替实体.
----控制对实体的存取.并可能负责创建和删除它.
----其它功能.
Subject
----定义了RealSubject和Proxy的共用接口. 这样就可以在使用RealSubject的地方
使用Proxy.
RealSubject
----定义Proxy所代表的实体.