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 代理" ArcGIS JS API 跨域配置是指在 JS 开发中遇到的访问本地服务和外网服务的问题,需要使用 Proxy 代理来解决跨域访问文件的问题。ArcGIS 的帮助中已经有了相关的介绍和使用配置。...
【标题】:“JDBC Proxy 代理类” 在Java开发中,JDBC(Java Database Connectivity)是连接数据库的主要方式。然而,直接使用JDBC代码往往繁琐且易出错,因此引入了代理类(Proxy Class)的概念,它能为JDBC提供更...
在本文中,我们将深入探讨“proxy代理程序”的概念以及如何实现一个简单的代理服务。网络编程是计算机科学中的一个重要领域,而代理程序在此中扮演着关键角色,它允许客户端通过中间服务器来访问其他网络资源,从而...
这里我们探讨的“spring proxy代理模仿”主要指的是Spring AOP(面向切面编程)中的动态代理实现。Spring AOP通过代理模式为我们提供了在运行时向目标对象添加拦截器或切面的能力,这在进行日志记录、性能监控、事务...
rdpproxy代理 很好的学习代码
Castle Dynamic Proxy代理使用 Castle Dynamic Proxy是.NET平台下的一个动态代理库,提供了一个灵活的方式来生成代理类。它可以动态生成透明代理类型,不需要实体类继承MarshalByRef或ContextBoundObject。 Castle...
Proxy代理模式是面向对象设计模式中的重要组成部分,它在软件工程中扮演着关键角色,尤其在Java编程中。代理模式的主要目的是为一个对象提供一个替身或者占位符,以便控制对这个对象的访问。这种设计模式允许我们...
JAVA 通过proxy代理方式访问internet资源,
本文将深入探讨使用C#编程语言实现Proxy代理的相关知识点,并结合提供的文件名称列表进行详细解释。 首先,"Proxy代理"是指在网络通信中,一个中间服务器作为客户端与目标服务器之间的桥梁。代理服务器可以用于多种...
综上所述,Proxy代理模式是设计模式中的一个重要组成部分,它允许我们在不改变原始对象的情况下,通过代理对象实现对原始对象的控制和扩展。在Java中,通过Java的Proxy类和InvocationHandler接口,我们可以轻松地...
本项目是基于C#的XProxy代理服务器设计源码,包含80个文件,其中C#源文件(.cs)59个,资源文件(.resx)5个,项目文件(.csproj)4个,配置文件(.config)2个,图标文件(.ico)2个,编辑器配置文件(....
IE代理服务器,基于Socket的程序代理,支持多客户端。
本文将详细介绍如何在Java中使用IE Proxy代理来实现这一功能。 首先,我们需要理解Java中的网络访问机制。Java使用`java.net`包中的`Socket`和`HttpURLConnection`等类来处理网络通信。当程序运行时,它会使用系统...
proxy代理,通过代理连接网络。更方便连接网络。
175服推出IOCP高负载Proxy代理服务器软件100连接数测试版 IOCP高负载服务器,可以处理很多很多的客户端,不仅如此还可以减轻服务器CPU内存使用率,使服务器发挥最大化。 常用于游戏服务器,游戏加速器,代理服务器...
Proxy代理模式是设计模式中的一种,它在Java中扮演着重要的角色,特别是在处理远程调用、安全性、缓存以及日志记录等方面。代理模式的基本思想是为一个对象提供一个替身或者占位符,以便控制对这个对象的访问。在这...
在使用Vue开发项目的过程中,我们经常会...总之,合理配置proxy代理,并结合动态配置策略,可以大幅提高开发效率,保证项目的灵活性和可维护性。希望本文介绍的内容能够帮助大家在Vue项目中更有效地解决接口配置问题。
部分proxy代理软件的源代码。 里面某些部分可以供参考,也有duilib的使用。
ftp proxy 代理 网络编程 socket
httpProxy,http/https代理服务器的源码,VC编译测试通过