结构型模式之Proxy模式

来源:互联网 发布:python正则匹配 编辑:程序博客网 时间:2024/06/07 14:26

1、意图

为其他对象提供一种代理以控制对这个访问

2、适用性

在以下情况下使用Proxy模式

(1)远程代理为一个对象在不同的地址空间提供局部代表。

(2)虚代理根据需要创建开销很大的对象。

(3)保护代理控制对原始对象的访问。

(4)智能指引取代了简单的指针,它在访问对象时执行一些附加操作。

3、参与者

(1)Proxy:保存一个引用使得代理可以访问实体;提供一个与 Subject的接口相同的接口,这样代理就可以用来替代实体;控制对实体的存取,并可以负责创建和删除它;其它功能依赖于代理的类型

(2)Subject:定义RealSubject和Proxy的共用接口,这样在任何使用RealSubject的地方都可以使用Proxy

(3)RealSubject:定义Proxy代表的实体

4、协作

代理根据其种类,在适当的时候向RealSubject转发请求

5、效果

Proxy模式在访问对象时引入了一定程度的间接性,根据代理的类型,附加的间接性有多种用途:

(1)Remote Proxy可以隐藏一个对象存在于不同地址空间的事实

(2)Virtual Proxy可以进行最优化

(3)Protection Proxies 和Smart Reference都允许在访问一个对象时有一些附加的内务处理

6、相关模式

Adapter:适配器Adapter为它所适配的对象提供了一个不同的接口。相反,代理提供了与它的实体相同的接口。然而,用于访问保护的代理可能会拒绝执行实例会执行的操作,因此,它的接口实际上可能只是实例接口的一个子集

Decorator:尽管decorator的实现部分与代理相似,但decorator的目的不一样。decorator为对象添加一个或多个功能,而代理则控制对对象的访问


0 0