代理模式
1. 代理模式:
为其他对象提供一种代理以控制对这个对象的访问。
问题描述:
2.代码实例解释说明:
IgiveGift(公共接口)类,定义了Pursuit(真实实体)和Proxy(代理)的公用接口,这样就在任何使用真实实体的地方都可以使用代理。
Pursuit类,定义了Proxy所代表的真实实体。
Proxy类,保存了一个引用使得代理可以访问实体,并提供一个与Pursuit的接口相同的接口,这样代理就可以用来代替实体。.
#include <iostream>
#include <string>
using namespace std;
class SchoolGirl
{
public:
string name;
};
class IGiveGift//代理接口
{
public:
virtual void giveDolls()=0;
virtual void giveFlowers()=0;
};
class Pursuit:public IGiveGift//追求者类
{
private:
SchoolGirl mm;
public:
Pursuit(SchoolGirl m)
{
mm=m;
}
void giveDolls()
{
cout<<mm.name<<" 送你娃娃"<<endl;
}
void giveFlowers()
{
cout<<mm.name<<" 送你鲜花"<<endl;
}
};
class Proxy:public IGiveGift//代理者类
{
private:
Pursuit gg;
public:
Proxy(SchoolGirl mm):gg(mm)
{
//gg=g;
}
void giveDolls()
{
gg.giveDolls();
}
void giveFlowers()
{
gg.giveFlowers();
}
};
int main()
{
SchoolGirl lijiaojiao;
lijiaojiao.name="李娇娇";
Pursuit zhuojiayi(lijiaojiao);
Proxy daili(lijiaojiao);
daili.giveDolls();
return 0;
}