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耳机,委托立讯精密代理生产。
代码:
#includeusing 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月15日 06时18分24秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
pgstrom如何工作
2019-04-26
standard_planner
2019-04-26
1 特征工程
2019-04-26
7 优化算法
2019-04-26
3经典算法
2019-04-26
9 前向NN
2019-04-26
4 朴素贝叶斯法
2019-04-26
8 提升方法
2019-04-26
2 感知机
2019-04-26
Pg BRIN索引
2019-04-26
3月19日
2019-04-26
给出一个正整数N和长度L,
2019-04-26
2模型评估
2019-04-26
1 排列与组合
2019-04-26
6 概率图模型
2019-04-26
Pg 的表空间
2019-04-26
2 Z变换
2019-04-26
7 支持向量机
2019-04-26
附录C
2019-04-26