美文网首页
Proxy代理模式

Proxy代理模式

作者: szn好色仙人 | 来源:发表于2019-03-20 20:36 被阅读0次

    动机

    • 在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等),直接访问会给使用者、系统结构带来很多麻烦

    定义

    • 为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问

    要点

    • 增加一层间接层是软件系统中对许多复杂问题的一种常见解决方法。

    示例

    #include <cstdio>
    
    
    class CBase
    {
    public:
        virtual ~CBase(){}
        virtual void Print() = 0;
    };
    
    class CChild : public CBase
    {
    public:
        void Print()
        {
            printf("Child\n");
        }
    };
    
    //代理类
    class CProxy : public CBase
    {
    public:
        void Set(CBase* pBase) { pBase_ = pBase; }
        
        //对被访问的对象提供间接层,可以添加安全控制等操作
        void Print()
        {
            printf("Deal Proxy\n");
            pBase_->Print();
        }
    
    private:
        CBase* pBase_;
    };
    
    
    int main()
    {
        CChild Child;
        CProxy Proxy;
        Proxy.Set(&Child);
        Proxy.Print();
        /*
        Deal Proxy
        Child
        */
    
        return 0;
    }
    

    https://www.bilibili.com/video/av24176315/?p=15

    相关文章

      网友评论

          本文标题:Proxy代理模式

          本文链接:https://www.haomeiwen.com/subject/isfxvqtx.html