代理模式,为其他对象提供一种代理以控制对这个对象的访问,通过这种方式限制Clinet对追求者的访问
//设计模式学习
class Interface{
public:
virtual void giveDolls() = 0;
virtual void giveFlowers() = 0;
virtual void giveChocolate() = 0;
};
class PrettyGile{
public:
PrettyGile(string str):str_name(str){
}
string getName(){
return str_name;
}
private:
string str_name;
};
class Pursuit :public Interface{
public:
Pursuit(string str,PrettyGile *mm):str_name(str),mm(mm){
}
virtual void giveDolls(){
cout <<str_name<< "送你" << " 抱熊" << endl;
};
virtual void giveFlowers() {
cout <<str_name<< "送你" << " 鲜花" << endl;
};
virtual void giveChocolate() {
cout <<str_name<< "送你" << " 巧克力" << endl;
};
private:
string str_name;
PrettyGile *mm;
};
class Dali:public Interface{
public:
Dali(string str,PrettyGile *mm):str_name(str){
pPur = new Pursuit("小明",mm);
}
virtual void giveDolls(){
pPur->giveDolls();
};
virtual void giveFlowers() {
pPur->giveFlowers();
};
virtual void giveChocolate() {
pPur->giveChocolate();
};
private:
Pursuit *pPur;
string str_name;
};
int main()
{
int n1 =9,n2=3;
PrettyGile *mm = new PrettyGile("校花");
Dali *dd = new Dali("代理",mm);
dd->giveDolls();
dd->giveFlowers();
dd->giveChocolate();
system("pause");
return 0;
}