代理模式:为其他对象提供一种代理以控制对这个对象的访问
二、基本思想
代理模式实际就是在访问对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。
三、优缺点分析
GOOD:(适用场合)
远程代理:也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象在不同地址空间的事实。
例如:客户端程序调用代理就可以解决远程访问的问题
虚拟代理:是根据需要创建开销很大的对象,通过代理来存放实例化需要很长时间的真实对象,从而达到性能的最优化(例如浏览器使用代理模式来优化下载)。
例如:打开大网页时,未马上打开的图片就是通过虚拟代理来替代了真实的图片,而代理存储了真实图片的路径和尺寸。
安全代理:用来控制真实对象的访问权限
智能引用:当调用真实对象时,代理处理另外一些事
四、标准UML图
五、标准源码
#ifndef PROXY_H
#define PROXY_H
3:
// 定义了Proxy和RealSubject的公有接口,
// 这样就可以在任何需要使用到RealSubject的地方都使用Proxy.
class Subject
7: {
public:
9: Subject(){}
virtual ~Subject(){}
11:
void Request() = 0;
13: };
14:
// 真正使用的实体
class RealSubject
public Subject
18: {
public:
20: RealSubject();
virtual ~RealSubject(){}
22:
void Request();
24: };
25:
// 代理类,含有一个指向RealSubject对象的指针
class Proxy
public Subject
29: {
public:
31: Proxy();
virtual ~Proxy();
33:
void Request();
35:
private:
37: RealSubject* m_pRealSubject;
38: };
#endif