代理模式

来源:互联网 发布:windows阻止软件安装 编辑:程序博客网 时间:2024/05/31 19:10

代理模式,为其他对象提供一种代理以控制找个对象

 

//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;}