(结构型模式)Proxy——代理模式
2010-05-27 22:14
204 查看
一、意图
代理模式:为其他对象提供一种代理以控制对这个对象的访问
二、基本思想代理模式实际就是在访问对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。
三、优缺点分析
GOOD:(适用场合) 远程代理:也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象在不同地址空间的事实。 例如:客户端程序调用代理就可以解决远程访问的问题 虚拟代理:是根据需要创建开销很大的对象,通过代理来存放实例化需要很长时间的真实对象,从而达到性能的最优化(例如浏览器使用代理模式来优化下载)。 例如:打开大网页时,未马上打开的图片就是通过虚拟代理来替代了真实的图片,而代理存储了真实图片的路径和尺寸。 安全代理:用来控制真实对象的访问权限 智能引用:当调用真实对象时,代理处理另外一些事 四、标准UML图
五、标准源码
[code] #ifndef PROXY_H
#define PROXY_H
// 定义了Proxy和RealSubject的公有接口,
// 这样就可以在任何需要使用到RealSubject的地方都使用Proxy.
class Subject
{
public:
Subject(){}
virtual ~Subject(){}
virtual void Request() = 0;
};
// 真正使用的实体
class RealSubject
: public Subject
{
public:
RealSubject();
virtual ~RealSubject(){}
virtual void Request();
};
// 代理类,含有一个指向RealSubject对象的指针
class Proxy
: public Subject
{
public:
Proxy();
virtual ~Proxy();
virtual void Request();
private:
RealSubject* m_pRealSubject;
};
#endif[/code]
[code] #include "Proxy.h"
#include <iostream>
RealSubject::RealSubject()
{
std::cout << "Constructing a RealSubject\n";
}
void RealSubject::Request()
{
std::cout << "Request By RealSubject\n";
}
Proxy::Proxy()
: m_pRealSubject(NULL)
{
std::cout << "Constructing a Proxy\n";
}
Proxy::~Proxy()
{
delete m_pRealSubject;
m_pRealSubject = NULL;
}
void Proxy::Request()
{
// 需要使用RealSubject的时候才去初始化
if (NULL == m_pRealSubject)
{
std::cout << "Request By Proxy\n";
m_pRealSubject = new RealSubject();
}
m_pRealSubject->Request();
}[/code]
[code] #include "Proxy.h"
#include <stdlib.h>
int main()
{
Subject* pProxy = new Proxy();
pProxy->Request();
delete pProxy;
system("pause");
return 0;
}[/code]
相关文章推荐
- 结构型模式之代理PROXY
- Proxy代理(结构型模式)
- 设计模式12: Proxy 代理模式(结构型模式)
- 设计模式(十一)代理模式Proxy(结构型)
- 结构型模式-代理 Structural Patterns-Proxy
- 设计模式12---设计模式之代理模式(Proxy)(结构型)
- 十三、 Proxy代理(结构型模式)
- Proxy(代理)-对象结构型模式
- C#面向对象设计模式第十三讲:Proxy 代理模式(结构型模式)
- 设计模式(十三): Proxy代理模式 -- 结构型模式
- 【结构型模式】proxy(代理)
- 设计模式(3)-结构型-代理模式(proxy)以及java动态代理的两种方式
- 对象结构型——代理模式(Proxy)
- Java经典设计模式-结构型模式-代理模式(Proxy)
- 二十二、代理模式Proxy 第一部分(结构型模式)
- C#面向对象设计模式纵横谈 学习笔记13 Proxy代理模式(结构型模式)
- 设计模式(十一)代理模式Proxy(结构型)
- 结构型模式(四):Proxy ( 代理模式 )
- 设计模式(3)-结构型-代理模式(proxy)以及java动态代理的两种方式
- [设计模式-结构型]代理模式(Proxy)