代理模式

本文介绍了C++中的代理模式,它是构造性设计模式之一,能为其他对象提供代理以控制访问。代理与被代理对象有相同接口,客户端通过代理与目标类交互。还阐述了代理模式的三个角色,即抽象角色、真实角色和代理角色,并给出相关代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++中代理模式也称为Proxy模式,是构造性的设计模式之一,它可以为其他对象提供一种代理,以控制对这个对象的访问。、

所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后)完成某些特别的处理。

代理模式一般会有以下三个角色:

1、抽象角色:指代理角色和真实角色对外提供的公共方法,一般为一个接口。

2、真实角色:需要实现抽象角色接口,定义了真实角色所要实现的业务逻辑,以便供代理角色调用,也就是真正的业务逻辑。

3、代理角色:需要实现抽象角色接口,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作,将统一的流程控制都放到代理角色中处理。
Proxy1.cpp(为经模式更改前的代码)

class ISubject{
public:
    virtual void process();
};

class RealSubject :public ISubject{
public:
    virtual void process(){
        //...
    }
};

class ClientApp{
    ISubject* subject;
public:
    ClientApp(){
        subject = new RealSubject();
    }

    void DoTask(){
        //...
        subject->process();

        //...
    }
};

Proxy2.cpp(代理模式更改后的代码)

class ISubject{
public:
    virtual void process();
};

class SubjectProxy :public ISubject{
public:
    virtual void process(){
        //对RealSunject的一种调用
        //...
    }
};

class ClientApp{
    ISubject* subject;
public:
    ClientApp(){
        subject = new SubjectProxy();
    }

    void DoTask(){
        //...
        subject->process();

        //...
    }
};

 

转载于:https://www.cnblogs.com/zhuifeng-mayi/p/11064389.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值