代理模式:为其他对象提供一种代理以控制对这个对象的访问。
代理模式的使用情况:
1. 远程代理,也就是为了一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。
2. 虚拟代理,根据需要创建一个开销很大的对象,通过它来存放实例化需要很长时间的真实对象。
3. 安全代理,用来控制真实对象的访问权限。
4. 智能指引,当调用真实对象时,代理可以处理另外一些事。
#include <iostream.h>
#include <string.h>
class CGiveGift
{
public:
virtual void GiveDolls()=0;
virtual void GiveFlowers()=0;
virtual void GiveChocolate()=0;
};
class CPursuit:public CGiveGift
{
private:
char m_girl[30];
public:
CPursuit(char *girl)
{
strcpy(m_girl,girl);
}
void GiveDolls()
{
cout<<m_girl<<",送你洋娃娃"<<endl;
}
void GiveFlowers()
{
cout<<m_girl<<",送你花"<<endl;
}
void GiveChocolate()
{
cout<<m_girl<<",送你巧克力"<<endl;
}
};
class CProxy:public CGiveGift
{
private:
CPursuit m_pursuit;
public:
CProxy(char *girl):m_pursuit(girl)
{
}
void GiveDolls()
{
m_pursuit.GiveDolls();
}
void GiveFlowers()
{
m_pursuit.GiveFlowers();
}
void GiveChocolate()
{
m_pursuit.GiveChocolate();
}
};
void main()
{
CProxy proxy("Lucy");
proxy.GiveDolls();
proxy.GiveFlowers();
proxy.GiveChocolate();
}