代理模式

2017-03-03  本文已影响0人  张霸天

#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的感觉吗)

第四种,智能指引,是指当前调用真实对象是,代理处理另一些事情。(就是二房东)

上一篇 下一篇

猜你喜欢

热点阅读