【设计模式基础】结构型模式 - 7 - 代理(Proxy)
2013-12-18 23:47
543 查看
1. 模式意图
代理(Proxy)模式给某一个对象提供一个代理,并由代理对象控制对原对象的引用。在一些情况下,一个客户不想或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介作用。
按照使用目的来划分,代理有以下几种:
远程代理(Remote Proxy): 为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中。
虚拟代理(Virtual Proxy): 根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建。
Copy-on-Write代理: 虚拟代理的一种,把复制(克隆)拖延到只有在客户端需要时,才真正采取行动。
保护代理(Protection Proxy): 控制对一个对象的访问,如果需要,可以给不同的用户提供不同级别的使用权限。
Cache代理: 为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果。
防火墙(Firewall)代理: 保护目标,不让恶意用户接近。
同步化(Synchronization)代理: 使几个用户能够同时使用一个对象而没有冲突。
智能引用(Smart Reference)代理: 当一个对象被引用时,提供一些额外的操作,比如将此对象调用的次数记录下来等。
虚拟代理、远程代理、智能引用代理和保护代理是最为常见的代理模式。
2. 模式定义
Subject: 声明Proxy和RealSubject的共同接口,这样就在任何使用RealSubject的地方都可以使用Proxy;
RealSubject:定义了Proxy所代表的实体;
Proxy: 保存一个引用使得代理可以访问实体;Proxy和RealSubject有相同的接口,这样代理就可以用来代替实体;控制对实体的存取,并可能负责创建和删除它;Proxy通常在将客户端调用传递给RealSubject之前或之后,都要执行某个操作,而不是单纯的将调用传递给RealSubject;
3. 模式实现
4. 模式应用
4.1 远程代理:客户端与webservice使用
4.2 C++智能指针
相关文章推荐
- 设计模式(12)--Proxy(代理模式)--结构型
- 设计模式-结构型模式:代理模式 Proxy
- 设计模式(十一)代理模式Proxy(结构型)
- PHP设计模式:结构型之代理(Proxy)
- 设计模式(十一)代理模式Proxy(结构型)
- 设计模式(十一)代理模式Proxy(结构型)
- 设计模式(12)-结构型-代理模式(Proxy)
- 设计模式-结构型-代理模式(Proxy)
- 设计模式学习之代理模式(Proxy,结构型模式)(11)
- 设计模式深入学习--Proxy 代理模式(结构型模式)
- 设计模式--代理模式Proxy(结构型)
- Java基础-设计模式之-代理模式Proxy
- 设计模式之十二:Proxy(代理)—对象结构型模式
- Java经典设计模式-结构型模式-代理模式(Proxy)
- 【设计模式学习笔记十三】【结构型模式】【代理模式(Proxy)】
- 设计模式十三:proxy(代理)——对象结构型模式
- 【结构型模式】代理模式(Proxy)之23种java设计模式
- 设计模式(十一)代理模式Proxy(结构型)
- 重学设计模式 - Proxy(代理)模式 - 结构型
- 设计模式--代理模式Proxy(结构型)