代理模式使用场合与注意事项

原创 2015年11月17日 16:50:17

代理 模式的定义:

     为其它对象提供一种代理以控制这个对象的访问--《设计模式》GOF

注意事项:

1. 接口并不是必须的,大多数情况下,我们为了保持对对象操作的透明性,并强制实现类实现代理类所要调用的所有的方法,我们会让它们实现与同一个接口。
2. 但是我们说代理类它其实只是在一定程度上代表了原来的实现类,所以它们有时候也可以不实现于同一个接口。
3. Proxy封装了对RealSubject的引用,以实现调用RealSubject的功能,并提供了额外的功能


使用场合:

1.远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中,也可是在另一台机器中。远程代理又叫做大使(Ambassador)。好处是系统可以将网络的细节隐藏起来,使得客户端不必考虑网络的存在。客户完全可以认为被代理的对象是局域的而不是远程的,而代理对象承担了大部份的网络通讯工作。由于客户可能没有意识到会启动一个耗费时间的远程调用,因此客户没有必要的思想准备。
2.虚拟(Virtual)代理:根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建。使用虚拟代理模式的好处就是代理对象可以在必要的时候才将被代理的对象加载;代理可以对加载的过程加以必要的优化。当一个模块的加载十分耗费资源的情况下,虚拟代理的好处就非常明显。
3.Copy-on-Write代理:虚拟代理的一种。把复制(克隆)拖延到只有在客户端需要时,才真正采取行动。
4.保护(Protect or Access)代理:控制对一个对象的访问,如果需要,可以给不同的用户提供不同级别的使用权限。保护代理的好处是它可以在运行时间对用户的有关权限进行检查,然后在核实后决定将调用传递给被代理的对象。
5.Cache代理:为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果。
6.防火墙(Firewall)代理:保护目标,不让恶意用户接近。
7.同步化(Synchronization)代理:使几个用户能够同时使用一个对象而没有冲突。
8.智能引用(Smart Reference)代理:当一个对象被引用时,提供一些额外的操作,比如将对此对象调用的次数记录下来等。


注意:本文为网络搜集并整理后的文档



代理模式(四):代理模式效果与适用场景

15.7 代理模式效果与适用场景        代理模式是常用的结构型设计模式之一,它为对象的间接访问提供了一个解决方案,可以对对象的访问进行控制。代理模式类型较多,其中远程代理、虚拟代理、保护...
  • u011151135
  • u011151135
  • 2016年03月12日 12:37
  • 2592

代理模式的简单例子

【代理模式应用场景举例】比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提...
  • lishaojun0115
  • lishaojun0115
  • 2016年02月26日 11:51
  • 1624

设计模式(二) 三种适配器模式 总结和使用场景

转载请标明出处: http://blog.csdn.net/zxt0601/article/details/52703280本文出自:【张旭童的博客】一 概述定义:适配器模式将某个类的接口转换成客...
  • zxt0601
  • zxt0601
  • 2016年10月18日 16:34
  • 3055

进程与线程学习(三)之线程之使用场合

在对进程、线程的学习稍加了解后,不仅会自问在什么情况下要使用多线程?毕竟,对知识的学习而不在于知识本身,而是怎么使用所学的知识,有什么局限性。 但从耗时来讲,我对多线程做了一些测试:程序如下: 只...
  • sgs1018
  • sgs1018
  • 2013年04月27日 14:51
  • 868

代理模式(四):代理模式效果与适用场景

15.7 代理模式效果与适用场景        代理模式是常用的结构型设计模式之一,它为对象的间接访问提供了一个解决方案,可以对对象的访问进行控制。代理模式类型较多,其中远程代理、虚拟代理、保护...
  • u011151135
  • u011151135
  • 2016年03月12日 12:37
  • 2592

opencv数据结构Mat的好处【转】

一:  关于 Mat ,首先要知道的是你不必再手动地(1)为其开辟空间(2)在不需要时立即将空间释放。但手动地做还是可以的:大多数OpenCV函数仍会手动地为输出数据开辟空间。当传递一个已经存在的 M...
  • peng825223208
  • peng825223208
  • 2014年05月13日 15:33
  • 653

Systick的应用

这篇学习笔记,完全是基于《STM32不完全手册》而言的,我没有买Alientek的开发板,买的是ARMFly的,其实都差不多,只不过安福莱的板载资源非常丰富罢了,应用起来其实都差不都。   ...
  • qqyuanhao163
  • qqyuanhao163
  • 2014年04月04日 09:56
  • 690

stl容器区别(内存布局和使用场合): vector list deque set map

set 和map都是无序的保存元素,只能通过它提供的接口对里面的元素进行访问。  set:集合, 用来判断某一个元素是不是在一个组里面,使用的比较少  map:映射,相当于字典,把一个值映射成另一个值...
  • u012223913
  • u012223913
  • 2016年04月22日 22:27
  • 1226

Ajax应用场景-Ajax适合的应用场合

Ajax不是万能的,在适合的场合使用Ajax,才能充分发挥它的长处,改善系统性能和用户体验,绝不可以为了技术而滥用。Ajax的特点在于异步交互,动态更新web页面,因此它的适用范围是交互较多,频繁读取...
  • qq_21439971
  • qq_21439971
  • 2015年10月18日 20:19
  • 5200

TVS的特性及应用

什么是TVS管?TVS的特性及应用 源自 http://www.twtcr.com/article.php?lge=zh&id=36 一、解释 TVS(TRANSIENT VOLTAGE...
  • xiaofon
  • xiaofon
  • 2015年04月10日 23:02
  • 1390
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:代理模式使用场合与注意事项
举报原因:
原因补充:

(最多只允许输入30个字)