设计模式-代理模式

来源:互联网 发布:怕死 陈奕迅 知乎 编辑:程序博客网 时间:2024/05/22 09:44

代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问

例子:一个追求者通过一位代理人去追求一个女生,在客户端并不需要知道追求者的存在
UML:
这里写图片描述

//抽象类class Gift {public:    virtual void GiveDolls() = 0;    virtual void GiveFlowers() = 0;    virtual void GiveChocolate() = 0;};//被追求者class Girl {private:    string m_name;public:    Girl(string name):m_name(name){}    string Getname()    {        return m_name;    }};//追求者class Pursuit :public Gift {private:    Girl *m_girl;public:    Pursuit(Girl *girl):m_girl(girl){}    void GiveDolls()    {        cout << m_girl->Getname() << " 送你洋娃娃" << endl;    }    void GiveFlowers()    {        cout << m_girl->Getname() << " 送你鲜花" << endl;    }    void GiveChocolate()    {        cout << m_girl->Getname() << " 送你巧克力" << endl;    }};//代理类class Proxy :public Gift{private:    Pursuit *m_persuit;public:    Proxy(Girl *girl)    {        m_persuit = new Pursuit(girl);    }    void GiveDolls()    {        m_persuit->GiveDolls();    }    void GiveFlowers()    {        m_persuit->GiveFlowers();    }    void GiveChocolate()    {        m_persuit->GiveChocolate();    }};int main(){    Girl *girl = new Girl("jiaojiao");    Proxy *proxy = new Proxy(girl);    proxy->GiveChocolate();    proxy->GiveDolls();    proxy->GiveFlowers();    system("pause");    return 0;}
1 0
原创粉丝点击