说下对代理模式的理解,代理模式就是用代理对象来替代实际对象,完成实际对象应该完成的操作,如给妹子送花, 或者打怪升级。
本质上, 他就是在访问对象的时候, 加入了一定程度的间接性, 通过这种间接性可以实现各种用途。
UML:

运行效果图

代码:
target.h

#ifndef _TARGET_H_
#define _TARGET_H_#include <string>class CTargetGirl{
public:CTargetGirl(std::string name) : name(name){}std::string Name() const { return name; }void Name(std::string val) { name = val; }private:std::string name;
};#endif // _TARGET_H_

operation.h

#ifndef _OPERATION_H_
#define _OPERATION_H_class CIOperation{
public:virtual void GiveDolls() const = 0;virtual void GiveFlowers() const = 0;virtual void GiveChocolates() const = 0;
};#endif // _OPERATION_H_

persuit.h

#ifndef _PERSUIT_H_
#define _PERSUIT_H_#include "target.h"
#include "operation.h"
#include <memory>
#include <iostream>class CPersuit : public CIOperation{
public:CPersuit(CTargetGirl * _girl) : girl(_girl){}void GiveDolls() const { std::cout << girl->Name() << " give you dolls" << std::endl; }void GiveFlowers() const { std::cout << girl->Name() << " give you flowers" << std::endl; }void GiveChocolates() const { std::cout << girl->Name() << " give you chocolates" << std::endl; }private:CTargetGirl * girl;
};#endif // _PERSUIT_H_

proxy.h

#ifndef _PROXY_H_
#define _PROXY_H_#include "persuit.h"
#include "operation.h"
#include <memory>
#include <iostream>class CProxy : public CIOperation{public:CProxy(CTargetGirl * _girl){ persuit = std::shared_ptr<CPersuit>(new CPersuit(_girl)); }void GiveDolls() const { persuit->GiveDolls(); }void GiveFlowers() const { persuit->GiveFlowers(); }void GiveChocolates() const { persuit->GiveChocolates(); }private:std::shared_ptr<CPersuit> persuit;
};#endif // _PROXY_H_

main.cpp

#include "proxy.h"
#include <iostream>
#include <memory>using namespace std;int main(){shared_ptr<CTargetGirl> girl(new CTargetGirl("jiaojiao"));shared_ptr<CProxy> proxy(new CProxy(girl.get()));proxy->GiveDolls();proxy->GiveFlowers();proxy->GiveChocolates();system("pause");return 0;
}

代理模式实现为别人做嫁衣 C++相关推荐

  1. java设计模式之为别人做嫁衣----代理模式

    2019独角兽企业重金招聘Python工程师标准>>> 7.1为别人做嫁衣 "小菜,今天见这个叫娇娇的美女见得如何呀?"大鸟一回家来就问小菜. "唉,别 ...

  2. 《大话设计模式》之--第7章 为别人做嫁衣----代理模式

    第7章 为别人做嫁衣----代理模式 7.1为别人做嫁衣 "小菜,今天见这个叫娇娇的美女见得如何呀?"大鸟一回家来就问小菜. "唉,别提了,人家是有男朋友的." ...

  3. 为别人做嫁衣 代理模式

    7.1 为别人做嫁衣! 7.2 没有代理的代码 namespace 代理模式 {class Program{static void Main(string[] args){SchoolGirl jia ...

  4. 代理模式(为别人做嫁衣)

    学习目标: 为别人做嫁衣--代理模式(持续更新) 学习方式: 知识的浏览者,网页的搬运工. 学习内容: 1.没有代理的代码 2.只有代理的代码 3.符合实际的代码 4.代理模式 5.代理模式应用 1. ...

  5. 第7章 为别人做嫁衣----代理模式 大话设计模式

    第7章 为别人做嫁衣----代理模式 7.1为别人做嫁衣 "小菜,今天见这个叫娇娇的美女见得如何呀?"大鸟一回家来就问小菜. "唉,别提了,人家是有男朋友的." ...

  6. 2. 代理模式-为别人做嫁衣

    今天来说另外一个设计模式:代理模式.举个例子:张三想追李娇娇同学,这里李娇娇同学不认识张三.张三让戴笠帮忙去送花送零食之类的,最后李娇娇同学和戴笠在一起了,张三为戴笠做了嫁衣.下面来详细解释: 首先定 ...

  7. 设计模式——代理模式(Proxy Pattern)之为别人做嫁衣

    代理模式Proxy Pattern 代理模式 1.背景 2.定义 3.特征 4.应用场景 5.实验案例 参考 代理模式 1.背景 假如说我现在想租一间房子,虽然我可以自己去找房源,做卫生检测等一系列的 ...

  8. 设计模式(三) | 为别人做嫁衣---代理模式

    代理模式 代理模式:为其他对象提供一种代理,以控制对这个对象的访问. 模式动机: 在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为"代理"的第三者来实现 ...

  9. 为别人做嫁衣——代理模式

    代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问. 代理模式(Proxy)结构图 Subject类,定义了RealSuject和Proxy的共用的接口,这样就在任何使用RealSu ...

最新文章

  1. 第一章 Mysql 简介及安装和配置
  2. php protected 属性,PHP 如何获取protected属性?
  3. 视觉(12)Active Vision Based Robot Navigation System
  4. 创建一个dynamics CRM workflow (三) - Creating Configuration Entity for Custom Workflow
  5. java---switch
  6. Matlab实现字符串分割
  7. metinfo mysql off_利用Sqlmap测试MetInfo企业网站管理系统MySql注入
  8. 环信Demo 导入错误
  9. Android实现本地推送通知的解决方案
  10. 多种数据库之间的同步工具SymmetricDS
  11. 手机无法弹出允许usb调试解决方法
  12. WIn10下如何为不同的显示器设置不同的桌面背景
  13. 怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串
  14. 【Docker】给运行的容器添加端口映射
  15. linux 关机流程 init exit,Linux开关机命令(shutdown,reboot,halt,init),haltinit
  16. 申宝股票-大盘缩量调整
  17. 小米系硬件查询保修日期
  18. KSO-.NET 6 中的新增功能
  19. java书号属性,基于Java的ISBN书号查询示例代码-六派数据
  20. BUU刷题记录——5

热门文章

  1. 智能围网,智慧围栏,智能围栏,智能护栏,攀破报警围栏——0误报,无漏报
  2. 移动端拍照上传图片之后压缩以及图片旋转问题
  3. 疫情之下,Nutanix推创新性解决方案助力企业发展
  4. 拼多多店铺名可以进行修改吗?
  5. 前端面试之计算机基础篇
  6. 6.数值微积分与方程求解
  7. 如何卸载twincat3_倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何让不同的PLC程序分线程运行 TC3...
  8. web大作业 静态网页(地下城与勇士 10页 带视频)
  9. php 给图片加图片边框,给照片制作简单木质相框 如何制作图片边框 怎么给图片加边框...
  10. 【CSS从入门到入土系列】—— 列表边框属性专题