#include <iostream>
#include <string>
using namespace std;
///代理接口
class IGiveGift
{
public:
virtual void GiveDolls() = 0;
virtual void GiveFlowers() = 0;
virtual void GiveChocolate() = 0;
};
///被追求者类
class SchoolGirl
{
public:
std::string name;
};
///追求者类
class Pursuit : public IGiveGift
{
public:
Pursuit(SchoolGirl* m)
{
this->mm = m;
}
void GiveDolls()
{
cout << mm->name << " 送你洋娃娃" << endl;
}
void GiveFlowers()
{
cout << mm->name << " 送你鲜花" << endl;
}
void GiveChocolate()
{
cout << mm->name << " 送你巧克力" << endl;
}
private:
SchoolGirl* mm;
};
///代理类
class Proxy : public IGiveGift
{
public:
Proxy(SchoolGirl* m)
{
gg = new Pursuit(m);
}
void GiveDolls()
{
gg->GiveDolls();
}
void GiveFlowers()
{
gg->GiveFlowers();
}
void GiveChocolate()
{
gg->GiveChocolate();
}
private:
Pursuit* gg;
};
int main()
{
SchoolGirl* jiaojiao = new SchoolGirl();
jiaojiao->name = "李娇娇";
Proxy* daili = new Proxy(jiaojiao);
daili->GiveDolls();
daili->GiveFlowers();
daili->GiveChocolate();
return 0;
}