设计模式系列十三 代理模式介绍

1、定义代理模式缓存

代理模式 为另外一个对象提供一个替身或占位符以控制对这个对象的访问。类图:图01.jpg安全

首先是Subject,它为RealSubject和Proxy提供了接口。经过实现同一接口,Proxy在RealSubject出现的地方取代它。网络

RealSubject是真正作事的对象,它是被Proxy代理和控制访问的对象。app

Proxy持有RealSubject的引用。在某些例子中,Proxy还会负责RealSubject对象的建立与销毁。客户和RealSubject的交互都必须经过Proxy。由于Proxy和RealSubject实现相同的接口(Subject),因此任何用到RealSubject的地方,均可以用Proxy取代。Proxy也控制了对RealSubject的访问,在某些状况下,咱们须要这样的控制。这些状况包括RealSubject是远程的对象、RealSubject建立开销大,或RealSubject须要被保护。设计

有时,咱们将代理描述成另外一个对象的“表明”。使用代理模式建立表明(representative)对象,让表明对象控制某对象的访问,被代理的对象能够是远程的对象、建立开销大的对象或须要安全控制的对象。代理

可是代理控制访问怎么解释呢?这听起来有一点奇怪。代理之因此须要控制访问,是由于咱们的客户(监视器)不知道如何和远程对象沟通。几种代理控制访问的方式:对象

一、远程代理控制访问远程对象。接口

二、虚拟代理控制访问建立开销大的资源。资源

三、保护代理基于权限控制对资源的访问。同步

2、代理的简单介绍

一、远程代理能够做为另外一个JVM上对象的本地表明。调用代理的方法,会被代理利用网络转发到远程执行,并将结果经过网络返回给代理,再由代理将结果转给客户。图02.jpg

二、虚拟代理做为建立开销大的对象的表明。虚拟代理常常直到咱们真正须要一个对象的时候才建立它,当对象在建立前和建立中时,由虚拟代理来扮演对象的替身。对象建立后,代理就会将请求直接委托给对象。图03.jpg

3、回顾要点

一、代理模式为另外一个对象提供表明,以便控制客户对对象的访问,管理访问的方式有许多中。

二、远程代理管理客户和远程对象之间的交互。

三、虚拟代理控制访问实例化开销大的对象。

四、保护代理基于调用者控制对对象方法的访问。

五、代理模式有许多变体,例如:缓存代理、同步代理、防火墙代理和写入时复制代理。

六、代理在结构上相似装饰者,可是目的不一样。

七、装饰者模式为对象加上行为,而代理则是控制访问。

八、Java内置的代理支持,能够根据须要创建动态代理,并将全部调用分配到所选的处理器。

九、就和其余的包装者(wrapper)同样,代理会形成你的设计中类的数目增长。

相关文章
相关标签/搜索