定义
名称: proxy
结构:
意图:
为其他对象提供一种代理以控制对这个对象的访问。
适用性:
- 在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用Proxy模式。下面是一些可以使用Proxy 模式常见情况:
1、远程(Remote)代理、为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中,亦可是在另一台机器中。远程代理又叫做大使(Ambassador)。
2、虚拟(Virtual)代理、根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建。
3、Copy-on-Write代理、虚拟代理的一种。把复制(克隆)拖延到只有在客户端需要时,才真正采取行动。
4、保护(Protect or Access)代理、控制对一个对象的访问,如果需要可以给不同的用户提供不同级别的使用权限。
5、Cache代理、为某一个目标操作的结果提供临时的储存空间,以便多个客户端可以共享这些结果。
6、防火墙(Firewall)代理、保护目标,不让恶意用户接近。
7、同步化(Synchronization)代理、使几个用户能够同时使用一个对象而没有冲突。
8、智能引用(Smart Reference)代理、当一个对象被引用时,提供一些额外的操作,比如将对此对象调用的次数记录下来等。
在所有种类的代理模式中,虚拟(Virtual)代理、远程(Remote)代理、智能引用代理(Smart Reference Proxy)和保护(Protect or Access)代理是最为常见的代理模式种类。
效果:
|
经典案例
1、Java RMI stub,EJBObject
Java RMI (Remote Method Invocation)是远程方法调用的简称,它大大增强了Java开发分布式应用的能力。
2、Jive 权限系统
最佳实践
1、
相关模式
1、
参考文章
1、
http://www.jdon.com/designpatterns/designpattern_proxy.htm
2、
http://blog.csdn.net/lxwde/archive/2004/08/06/66688.aspx
3、代理模式(阎宏)
http://www.ttian.net/article/show.php?id=219