设计模式-代理模式

        顾名思义,代理模式就是给一个类寻找一个代理类,对其暴露在外的方法进行一定的限制。比如,我们在外找房子的时候通常需要找一个代理(中介),委托中介与房东打交道从而进行房租的租赁等活动。这个代理就可以规避一些我们所不关注的东西,比如这个房子的房主是谁,是通过什么渠1道买的等,这些信息实际上对我们而言可有可无。

1. 代理模式

        如上图所示,Proxy类作为landloard类的代理类,可以代表房东与房客进行商谈,从而隐藏一些信息。在下面的代码中,我们就隐藏了房东对房子的一些隐私信息(info函数中的内容),但是通过中介包装之后,顾客显然就无从得知这些信息了。

#include <iostream>
#include <string>

using namespace std;


class People{
public:
    virtual void show()=0;
};

class Landlord:public People{
public:
    void show(){
        cout << "我是房主" << endl;
    }
    void info(){
        cout << "这是房子的隐私信息,但是我不想告诉你" << endl;
    }
};

class Proxy:public People{
private:
    Landlord* landloard;
public:
    void show(){
        if(!landloard){
            landloard = new Landlord();
        }
        cout << "我是中间商,我代表房主与你谈判" << endl;
        landloard->show();
    }
};

int main(){
    Proxy* proxy = new Proxy();
    proxy->show();
    return 0;
}

        下面是运行结果:

 2. 代理模式与适配器模式

        从上面的代码中不难得知代理模式和适配器模式很相似,但是它们有着本质的区别。适配器模式为了将两个类的接口进行整合,从而保证接口一致从而进行通信;而代理模式主要是给为了给现有的类进行封装,但是并不改变其暴露在外的接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值