Proxy 代理,为其他对象提供一个代理以控制这个对象。
Proxy 代理模式还是比较好理解的,一般风为虚拟代理和远程代理。
虚拟代理通常用于代理那些创建昂贵代价的对象以及那些急于立即创建的对象,直到它真正需要时才会被创建或初始化。比较常见的例子就是 网页 的图片,在还有flash里面的Loader类,虚拟代理还有一个好处就是惰性序列化,比如获得一个xml数据的代理就是一个很好的例子。一个体积庞大的xml的解析过程是很耗时的,我们不一定要等到它完全解析为我们需要的数据,我们可以创建一个代理,需要用到那部份数据时在去解析那部份数据,这样就会避免解析过程的耗时。
代理还有一个用处就是远程代理,它替代的是一个远程的对象。它可以是和代理分离的swf文件、flash Remote服务、SOAP服务、REST服务以及其他任意的服务。这时远程代理扮演的是一个本地的角色,它拥有和远程对象一样的公共方法作为远程资源,代表对远程资源的请求。
Adaptor 模式 、Facade模式与代理的模式很相似。但是最主要的就是,代理实现和代理对象一样的接口。adaptor需要更改装换对象的API,而Facade是简化系统的API从而提供一个容易操作的接口。Decorator模式呢,虽然也是实现和装饰对象一样的接口,或者是直接继承于源对象的抽象类,但是Decorator 的目的在与对源对象进行Wrap,以便添加一些新的东西。
结构型模式的讨论,摘自《设计模式》
你可能注意到了结构型模式质之间的相似性,尤其是他们的参与者和协作者之间的相似性。
1、Adapter和Bridge,他们之间有一些共同特征。他们都给另一个对象提供了一定程度上的间接性,因而有利于系统的灵活性。他们都涉及到重自身以外的一个接口向这个对象转发请求。他们的不同之处在于,Adapter主要是为了解决两个已有接口之间的不匹配的问题,它不会考虑接口是怎么实现的,也不考虑他们各自如何的演化,Adapter不许要对两个独立设计的类中的任何一个进行重新设计,就能使他们协同工作。Bridge是,对象的接口与它的实现部分进行桥接,这个模式虽然允许你修改他的类,但是它仍然提供了一个稳定的接口。
当你发现,需要将两个接口不同的类,必须同时工作时,就有必要使用Adapter模式,其目的还是为了代码的重用。而Bridge的使用者必须事先知道,抽象类有多个实现部分,并且这两者是独立演化的。Adaper是在类已经设计好之后,实施,Bridge是在设计类之前实施。
也许你认为Facade是一组对象的适配器,但是你也许忽略了一个事实,Facade可能定义了一个新的接口,而Adapter则一定是复用了其中的一个接口,它并没有定义新的接口。
2、Composite 、Decorator 、Proxy,Composite和Decorator具有相似的结构图,这点说明他们都是基于递归组合来组合可变数目的对象。这个共同点也许会是你认为,Decorator是一个退化了的Composite,这个观点是不对的。他们的相似点仅止于递归组合,他们的模式的目的是不一样的。Decorator旨在是你能够不需要生成子类就可以给对象添加职责。这就避免了静态类实现所有的功能组合,从而导致类爆炸。Composite旨在构造类,使得相关度 对象能够一统一的方式去处理,就像处理单个对象一样。
尽管他们的目的,截然不同,当却具有互补性。所以Decorator和Composite经常协同使用。在使用这两种模式的时候,我们无需定义新的类,只要将对象插接在一起就可以了。
另一个与Decorator 相似的,模式是Proxy。这两个模式都描述了怎样为对象提供一定程度的间接引用,两种模式都保留了,指向另一个对象的指针,他们想这个对象发送请求。同样的他们有不同的目的。
- 大小: 42.7 KB
分享到:
相关推荐
详细介绍ArcGIS JS API跨域配置 介绍Proxy 代理不同web服务器环境部署和调用
rdpproxy代理 很好的学习代码
proxy代理程序实例和讲解 网络编程详细代码实现和讲解
IE代理服务器,基于Socket的程序代理,支持多客户端。
spring proxy代理模仿 提练出来了
proxy代理,通过代理连接网络。更方便连接网络。
175服推出IOCP高负载Proxy代理服务器软件100连接数测试版 IOCP高负载服务器,可以处理很多很多的客户端,不仅如此还可以减轻服务器CPU内存使用率,使服务器发挥最大化。 常用于游戏服务器,游戏加速器,代理服务器...
Castle Dynamic Proxy代理使用
JAVA 通过proxy代理方式访问internet资源,
部分proxy代理软件的源代码。 里面某些部分可以供参考,也有duilib的使用。
用C#编写的Proxy代理,网络编程参考
Proxy代理模式的经典实例(很有面向对象思想哦)。快速学会Proxy代理模式.
httpProxy,http/https代理服务器的源码,VC编译测试通过
JAVA Proxy 代理模式
C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式) (Level 300)
通过代理进行通信.演示如何通过proxy代理通信。不可多得的资料。
详解设计模式中的proxy代理模式及在Java程序中的实现共14页.pdf.zip
C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式)
xrelayer http proxy 代理应用程序 WINDOWS