码迷,mamicode.com
首页 > 其他好文 > 详细

13 代理模式

时间:2016-12-20 07:44:24      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:类图   存储   多线程   接口   family   同步   线程   style   top   

代理模式(Proxy):为另一个对象提供一个替身或占位符以控制对这个对象的访问。

UML类图:

技术分享

Subject为RealSubject和Proxy提供了统一的接口,Proxy就是RealSubject的代理。RealSubject是真正做事的对象,是被Proxy代理和控制访问的对象。Proxy持有RealSubject的引用,客户想与RealSubject交互的话,必须经过Proxy代理。

上面就是代理模式的一般形式,但代理模式有许多变体。典型的有远程代理、虚拟代理和保护代理。

1 远程代理控制访问远程对象

如Web Service便是用远程代理的形式。

2 虚拟代理控制访问创建开销大的资源

开销大,可能是网络请求流量大、耗时长,也可能是IO读写满等等。比如,网页中的图片对象,由于图片请求比较耗时,但为了兼顾排版美观,就先用于图片大小一致的方框占位,等图片下载好后,填充到占位的地方,这便是一种虚拟代理。

3 保护代理基于权限控制对资源的访问

4 智能引用代理(Smart Reference Proxy),在调用真实对象时,代理处理另外一些事。如计算真实对象的引用次数,这样当该对象没有引用时,可以自动释放它。(看来GC就是这类啊)

另外,还有许多种代理的变体,比如防火墙代理(Firewall Proxy),控制网络资源的访问,保护主体免于“坏客户”的侵害;缓存代理(Caching Proxy)为开销大的运算结果提供暂时存储,它也允许多个客户共享;同步代理(Synchronization Proxy)在多线程的情况下为主体提供安全的访问等等,好深奥,好好学。

 

这节没有代码,后续深入学习web service。

13 代理模式

标签:类图   存储   多线程   接口   family   同步   线程   style   top   

原文地址:http://www.cnblogs.com/zhixin9001/p/6201267.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!