代理模式
代理模式的概念:
类图:
时序图:
客户端调用的代理类,可以进行三个基本步骤:
1 preRequest(这个可以通过事件分发来完成)
2 request(这个是调用被代理对象的reqest,真实主题的调用)
3 postRequest(调用后的收尾工作)
java的aop一部分实现的原理也是根据代理模式来完成的。
这个过程可以很好的对真实主题的request方法又精细的控制,对于前端,可以通过注册回调函数来进行控制。在设计类库的时候,经常用到这个模式。
使用场景:
1 远程(Remote)代理、为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中,亦可是在另一台机器中。远程代理又叫做大使(Ambassador)。
2 虚拟(Virtual)代理、根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建。本章下面给出一个加载图像的例子说明虚拟代理的使用。
Copy-on-Write代理、虚拟代理的一种。把复制(克隆)拖延到只有在客户端需要时,才真正采取行动。
3 保护(Protect or Access)代理、控制对一个对象的访问,如果需要可以给不同的用户提供不同级别的使用权限。
4 Cache代理、为某一个目标操作的结果提供临时的储存空间,以便多个客户端可以共享这些结果。
5 防火墙(Firewall)代理、保护目标,不让恶意用户接近。
6 同步化(Synchronization)代理、使几个用户能够同时使用一个对象而没有冲突。
7 智能引用(Smart Reference)代理、当一个对象被引用时,提供一些额外的操作,比如将对此对象调用的次数记录下来等。
在所有种类的代理模式中,虚拟(Virtual)代理、远程(Remote)代理、智能引用代理(Smart Reference Proxy)和保护(Protect or Access)代理是最为常见的代理模式种类。
总之,就是在调用实际的代理类之前,先进行一些操作,完成比如检测权限,检测依赖环境的功能。
浙公网安备 33010602011771号