代理模式,为其他对象提供一种代理以控制找个对象
//person.h
#ifndef _PERSON_H_
#define _PERSON_H_
#include <string>
using namespace std;
class SchoolGirl
{
public:
string GetName()
{
return name;
}
void setName(string na)
{
name = na;
}
private:
string name;
};
class GiveGift
{
public:
virtual void GiveDolls() = 0;
virtual void GiveFlowers() = 0;
virtual void GiveChocolate() = 0;
};
class Persuit: GiveGift
{
SchoolGirl mm;
public:
Persuit(SchoolGirl girl)
{
mm = girl;
}
void GiveDolls()
{
cout << mm.GetName() + " 送你洋娃娃" << endl;
}
void GiveFlowers()
{
cout << mm.GetName() + " 送你鲜花" << endl;
}
void GiveChocolate()
{
cout << mm.GetName() + " 送你巧克力" << endl;
}
};
class Proxy: GiveGift
{
Persuit *gg;
public:
Proxy(SchoolGirl mm)
{
gg = new Persuit(mm);
}
~Proxy()
{
delete gg;
gg = NULL;
}
void GiveDolls()
{
gg->GiveDolls();
}
void GiveFlowers()
{
gg->GiveFlowers();
}
void GiveChocolate()
{
gg->GiveChocolate();
}
};
#endif
#include <iostream>
#include <cstdio>
#include "person.h"
using namespace std;
int main()
{
SchoolGirl girl;
girl.setName("jiaojiao");
Proxy *proxy = new Proxy(girl);
proxy->GiveDolls();
proxy->GiveFlowers();
proxy->GiveChocolate();
delete proxy;
return 0;
}