代理模式

代理模式非常简单。代理模式为其他对象提供一种代理以控制这个对象的访问。

Subject(抽象主题角色): 真实主题与代理主题的共同接口
RealSubject(真实主题角色): 定义了代理角色所代表的真实对象。
Proxy(代理主题角色): 含有对真实主题角色的引用,代理角色通常在将客户端调用传递给真实主题对象之前或者之后执行某些操作,而不是单纯返回真实的对象。

a中包含b类;a、b类中实现协议类;

(现在很流行的电商软件就很喜欢这个模式)

代码奉上。

#include<iostream>
#include<string>

using namespace std;

class Subject
{
public:
    Subject() {}
    virtual void salesCar() = 0;
};

class Seller : public Subject
{
public:
    Seller () {}
    //卖车
    void salesCar()
    {
        cout<< "卖车" <<endl;
    }
};

class TaoBao : public Subject
{
public:
    TaoBao (Subject* sub): m_subject(sub){}

    //卖车,但是除了普通的卖车,我们还可以做别的事情,比如搞促销
    void salesCar()
    {
        m_subject->salesCar();
        promotion();
    }
public:
    //促销
    void promotion()
    {
        cout<< "淘宝双十一打折促销!!!"<<endl;
    }
private:
    Subject* m_subject;
};

int main()
{
    Seller* seller = new Seller();
    TaoBao* taobao = new TaoBao(seller);

    //通过淘宝作为代理来卖车
    taobao->salesCar();

    delete seller;
    delete taobao;

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值