代理模式
其他二十三种设计模式
#include<iostream>
using namespace std;
class Girl {
public:
void Name(string _name) {
this->name = _name;
}
string GetName() {
return name;
}
private:
string name;
};
class IGiveGift {
public:
virtual void GiveDolls() = 0;
virtual void GiveFlowers() = 0;
virtual void GiveChocolate() = 0;
};
class Pursuit :public IGiveGift {
public:
Pursuit(Girl* name) {
this->mm = name;
}
virtual void GiveDolls() {
cout << mm->GetName() << " 送你洋娃娃!" << endl;
}
virtual void GiveFlowers() {
cout << mm->GetName() << " 送你花!" << endl;
}
virtual void GiveChocolate() {
cout << mm->GetName() << " 送你巧克力!" << endl;
}
private:
Girl* mm;
};
class Proxy :public IGiveGift {
public:
Proxy(Girl* name) {
this->gg = new Pursuit(name);
}
virtual void GiveDolls() {
this->gg->GiveDolls();
}
virtual void GiveFlowers() {
this->gg->GiveFlowers();
}
virtual void GiveChocolate() {
this->gg->GiveChocolate();
}
private:
Pursuit* gg;
};
void test1() {
Girl* jiaojiao = new Girl();
jiaojiao->Name("李娇娇");
Proxy* daili = new Proxy(jiaojiao);
daili->GiveDolls();
daili->GiveFlowers();
daili->GiveChocolate();
delete daili;
delete jiaojiao;
}
int main() {
test1();
return 0;
}