设计模式-代理模式

代理模式(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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值