#include <stdio.h>
#include <iostream>
using namespace std;
class GiveGift {
public:
virtual ~GiveGift(){};
virtual void GiveDolls()=0;
virtual void GiveFlowers()=0;
virtual void GiveChocolate()=0;
};
class SchoolGirl {
private:
string name;
public:
string getName(){return name;}
void setName(string name_){name = name_;}
};
class Pursuit:GiveGift {
private:
SchoolGirl * mm;
public:
Pursuit(SchoolGirl * mm){
this->mm = mm;
}
void GiveDolls() {cout<<"send doll"<<endl;};
void GiveFlowers() {cout<<"send flower"<<endl;};
void GiveChocolate(){cout<<"send chocolate"<<endl;};
};
class Proxy:GiveGift {
Pursuit * gg;
public:
Proxy(SchoolGirl * mm) {
gg = new Pursuit(mm);
}
void GiveDolls() {gg->GiveDolls();/* you can do anything you want */};
void GiveFlowers() {gg->GiveFlowers();};
void GiveChocolate(){gg->GiveChocolate();};
};
void testLesson4(){
SchoolGirl * jiaojiao = new SchoolGirl();
jiaojiao->setName("脚脚");
Proxy * dali = new Proxy(jiaojiao);
dali->GiveDolls();
dali->GiveFlowers();
dali->GiveChocolate();
}
代理模式的应用场景
第一(我没看懂) 远程代理,也就是为一个对象在不同的地址空间提供局部代理,这样可以隐藏一个对象存在于不同地址空间的事实。
第二 虚拟代理,就是根据需要创建很大开销的对象,通过它来存放实例化需要很长时间的真实对象(感觉就是占个座)
第三种 安全代理,用来控制真实对象的访问权限(这不就是vpn的感觉吗)
第四种,智能指引,是指当前调用真实对象是,代理处理另一些事情。(就是二房东)