c++之代理模式
发布日期:2021-09-25 21:40:48 浏览次数:9 分类:技术文章

本文共 1172 字,大约阅读时间需要 3 分钟。

代理模式

代理模式属于结构型模式。

定义

代理即一个类代表另一个类的功能。

比如篮球运动员通过经纪人与老板谈薪,那么经纪人就是篮球运动员的代理。

在代理模式中,通过创建一个具有需要代理对象的代理,以便向外界提供需要的功能。

加深理解:

在某些情况下,一个类对象不适合或者不能直接引用另一个类对象,

所以可以交给代理类去完成这个中介的作用,是不是感觉和中介模式有点像。
其实中介模式和代理模式概念是比较接近,但是实际实现却是不同的。

假设有A、B、C三个类,A与B想交流,但是A却因为某种原因,不能直接和B交流

所以需要通过C来代理,而C这个代理其实只封装了A的对象。相当于C就是A的全权代表了。
这个就是代理模式。

中介模式呢,A、B想交流,但是需要通过C来牵线,在C这个类中,封装了A与B的对象。

而代理模式C只封装了A,这就是中介模式和代理模式的不同点。
在现实中,中介模式和买房卖房很像,代理模式和律师帮忙打官司很像。
 

类图:

应用场景:

现在苹果公司需要生产AirPods耳机,委托立讯精密代理生产。

代码:

#include 
using namespace std;//抽象工厂class IFactory{public: virtual ~IFactory() {} virtual void createProduct() = 0;};//苹果AirPods耳机工厂class AppleAirpodsFactory :public IFactory{public: void createProduct() { cout << "生产苹果AirPods耳机" << endl; }};//立讯精密公司代理生产class ILXCompanyProxy :public IFactory{public: ILXCompanyProxy(IFactory* f) :m_factory(nullptr) { m_factory = f; } void createProduct() { cout << "立讯精密代理:" << endl; m_factory->createProduct(); }private: IFactory* m_factory;};//客户端int main(){ IFactory* factory = new AppleAirpodsFactory; ILXCompanyProxy* proxy = new ILXCompanyProxy(factory); proxy->createProduct(); if (factory) delete factory; if (proxy) delete proxy; getchar(); return 0;}

输出:

转载地址:https://blog.csdn.net/c_shell_python/article/details/106756731 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:c++之工厂方法模式
下一篇:c++之简单工厂模式

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月15日 06时18分24秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章