c++设计模式--代理模式

意图:为其他对象提供一种代理以控制对这个对象的访问。
主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。
示例场景:去移动营业厅充话费,但是在代理处必须要一次性充值大于50元,此时这就是代理。代理可以做任何你想做的事,拓展性变强。


代码如下:
#include<iostream>
class Business
{
public:
    Business(){}
    virtual ~Business(){}
    virtual bool Recharge(int)=0;
};
class CMCC:public Business
{
public:
    CMCC(){}
    ~CMCC(){}
    bool Recharge(int money)
    {
        std::cout<<"充值"<<money<<"元"<<std::endl;
        return true;
    }
};
class CMCCProxy:public Business
{
public:
    CMCCProxy(){m_cmcc=NULL;}
    ~CMCCProxy()
    {
        if(m_cmcc)
            delete m_cmcc;
    }
    bool Recharge(int money)
    {
        if(money<50)
        {
            std::cout<<"请充值大于50元!"<<std::endl;
            return false;
        }
        else
        {
            m_cmcc=new CMCC;
            m_cmcc->Recharge(money);
            return true;
        }
    }
private:
    CMCC *m_cmcc;
};
int main()
{
    Business * p = new CMCCProxy;
    p->Recharge(30);
    p->Recharge(60);
}

输出:

请充值大于50元!
充值60元

猜你喜欢

转载自blog.csdn.net/hlw0522/article/details/80342108
今日推荐