美文网首页
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