zl程序教程

您现在的位置是:首页 >  后端

当前栏目

设计模式——代理模式(C++实现)

2023-09-14 09:07:07 时间

在这里插入图片描述
在这里插入图片描述

#include <iostream>
#include <string>

using namespace std;


class CSubject
{
public:
        virtual void Request() = 0;
};

class CRealSubject: public CSubject
{
public:
        virtual void Request()
        {
                cout<< "ReadSubject request....."<< endl;
        }

};

class CProxy: public CSubject
{
public:
        CProxy()
        {
                m_pstRealSubject = new CRealSubject();
        }

        virtual void Request()
        {
                if (m_pstRealSubject == NULL)
                        m_pstRealSubject = new CRealSubject();

                cout<< "CProxy Request...."<< endl;
                m_pstRealSubject->Request();
        }

private:
        CRealSubject* m_pstRealSubject;
};


int main(int argc, char* argv[])
{
        CProxy* pstProxy = new CProxy();
        pstProxy->Request();

        return 0;
}
/
[root@ ~/learn_code/design_pattern/5_proxy]$ ./proxy
CProxy Request....
ReadSubject request.....

参考:http://design-patterns.readthedocs.io/zh_CN/latest/structural_patterns/proxy.html