代理模式
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;
}