概念代理这个词对我们来说非常熟悉,比如上网经常使用的代理服务器,还有销售代理商等。就是客户与目标之间的桥梁。设计模式中的代理模式(Proxy)是这样定义的:为其他对象提供一种代理以控制对这个对象的访问。若要为其他对象提供代理服务,那么首先本身也要具有与被代理对象同样的方法,那么这样在访问时才能真正起到(透明)代理的作用。所以代理类一般同被代理类是继承于同一个类的兄弟类,区别就是他是为别人服务的。这样说来,表面看代理很风光,啥都得通过他,好像没他不行似的,其实他就是个跑堂的!
组成部分1.抽象主题:基类,声明了代理对象和真实对象的共同点;2.真实主题:真正需要被调用的对象;3.代理对象:代理真实对象的对象。
分类1.远程代理:也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。这个不同的地址空间可以是在本机器上,也可以在另一台机器中。2.虚拟代理:是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象,使其只有在真正需要时才被创建。3.安全代理:也叫保护代理,用来控制真实对象访问时的权限,如果有必要的话,可以给不同调用者提供不同的权限。4.智能指引:是指当调用真实对象时,代理处理另外一些事,比如记录对此对象的调用次数等。5.写时拷贝:虚拟代理的一种,把复制推迟到只有客户的需要时才进行。6.缓存代理:为某一个目标的操作结果提供临时存储空间,以便其他客户的可以共享访问,有点缓存的味道。7.防火墙代理:保护对象,不让用户访问,安全代理的特例。8.同步代理:可以让几个用户同时访问同一个对象而不产生冲突。常用的是前四种代理方式。
UML类图 实例代码1)Proxy.h
Copyright @ 老狼 Powered by: .Text and ASP.NET Theme by: .NET Monster