C++代理模式

代理模式

代理模式是一种结构型设计模式,它允许通过代理对象控制对其他对象的访问。代理对象充当客户端和目标对象之间的中间人,可以在访问目标对象时进行一些额外的控制或处理。

使用场景

1、远程代理:当需要访问远程对象时,可以使用代理对象来隐藏网络通信的细节。
2、虚拟代理:当需要延迟创建目标对象,或者需要在访问目标对象时进行一些额外的处理时,可以使用代理对象来进行虚拟代理。
3、安全代理:当需要控制对目标对象的访问权限时,可以使用代理对象来进行安全代理。
4、智能引用:当需要在访问目标对象时进行一些额外的操作,比如引用计数、懒加载等时,可以使用代理对象来进行智能引用。

优势:

1、可以控制对目标对象的访问,实现了对目标对象的保护。
2、可以在访问目标对象时进行一些额外的处理,比如延迟加载、缓存等。
3、可以提高系统的灵活性和可扩展性,因为代理对象可以在不影响客户端的情况下对目标对象进行增强或修改。

劣势:

1、可能会增加系统的复杂性,因为需要创建大量的代理类。
2、可能会影响系统的性能,因为每次访问目标对象都需要经过代理对象。

#include <iostream>

// 抽象主题
class Subject {
public:
    virtual void request() = 0;
};

// 具体主题
class RealSubject : public Subject {
public:
    void request() {
        std::cout << "RealSubject request" << std::endl;
    }
};

// 代理
class Proxy : public Subject {
private:
    RealSubject* realSubject;
public:
    void request() {
        if (realSubject == nullptr) {
            realSubject = new RealSubject();
        }
        // 可以在访问真实主题之前进行一些额外的处理
        std::cout << "Proxy request begin" << std::endl;
        realSubject->request();
        // 可以在访问真实主题之后进行一些额外的处理
        std::cout << "Proxy request end" << std::endl;
    }
};

int main() {
    Proxy proxy;
    proxy.request();

    while (1);
    return 0;
}

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值