代理模式实现为别人做嫁衣 C++
说下对代理模式的理解,代理模式就是用代理对象来替代实际对象,完成实际对象应该完成的操作,如给妹子送花, 或者打怪升级。
本质上, 他就是在访问对象的时候, 加入了一定程度的间接性, 通过这种间接性可以实现各种用途。
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++相关推荐
- java设计模式之为别人做嫁衣----代理模式
2019独角兽企业重金招聘Python工程师标准>>> 7.1为别人做嫁衣 "小菜,今天见这个叫娇娇的美女见得如何呀?"大鸟一回家来就问小菜. "唉,别 ...
- 《大话设计模式》之--第7章 为别人做嫁衣----代理模式
第7章 为别人做嫁衣----代理模式 7.1为别人做嫁衣 "小菜,今天见这个叫娇娇的美女见得如何呀?"大鸟一回家来就问小菜. "唉,别提了,人家是有男朋友的." ...
- 为别人做嫁衣 代理模式
7.1 为别人做嫁衣! 7.2 没有代理的代码 namespace 代理模式 {class Program{static void Main(string[] args){SchoolGirl jia ...
- 代理模式(为别人做嫁衣)
学习目标: 为别人做嫁衣--代理模式(持续更新) 学习方式: 知识的浏览者,网页的搬运工. 学习内容: 1.没有代理的代码 2.只有代理的代码 3.符合实际的代码 4.代理模式 5.代理模式应用 1. ...
- 第7章 为别人做嫁衣----代理模式 大话设计模式
第7章 为别人做嫁衣----代理模式 7.1为别人做嫁衣 "小菜,今天见这个叫娇娇的美女见得如何呀?"大鸟一回家来就问小菜. "唉,别提了,人家是有男朋友的." ...
- 2. 代理模式-为别人做嫁衣
今天来说另外一个设计模式:代理模式.举个例子:张三想追李娇娇同学,这里李娇娇同学不认识张三.张三让戴笠帮忙去送花送零食之类的,最后李娇娇同学和戴笠在一起了,张三为戴笠做了嫁衣.下面来详细解释: 首先定 ...
- 设计模式——代理模式(Proxy Pattern)之为别人做嫁衣
代理模式Proxy Pattern 代理模式 1.背景 2.定义 3.特征 4.应用场景 5.实验案例 参考 代理模式 1.背景 假如说我现在想租一间房子,虽然我可以自己去找房源,做卫生检测等一系列的 ...
- 设计模式(三) | 为别人做嫁衣---代理模式
代理模式 代理模式:为其他对象提供一种代理,以控制对这个对象的访问. 模式动机: 在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为"代理"的第三者来实现 ...
- 为别人做嫁衣——代理模式
代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问. 代理模式(Proxy)结构图 Subject类,定义了RealSuject和Proxy的共用的接口,这样就在任何使用RealSu ...
最新文章
- 第一章 Mysql 简介及安装和配置
- php protected 属性,PHP 如何获取protected属性?
- 视觉(12)Active Vision Based Robot Navigation System
- 创建一个dynamics CRM workflow (三) - Creating Configuration Entity for Custom Workflow
- java---switch
- Matlab实现字符串分割
- metinfo mysql off_利用Sqlmap测试MetInfo企业网站管理系统MySql注入
- 环信Demo 导入错误
- Android实现本地推送通知的解决方案
- 多种数据库之间的同步工具SymmetricDS
- 手机无法弹出允许usb调试解决方法
- WIn10下如何为不同的显示器设置不同的桌面背景
- 怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串
- 【Docker】给运行的容器添加端口映射
- linux 关机流程 init exit,Linux开关机命令(shutdown,reboot,halt,init),haltinit
- 申宝股票-大盘缩量调整
- 小米系硬件查询保修日期
- KSO-.NET 6 中的新增功能
- java书号属性,基于Java的ISBN书号查询示例代码-六派数据
- BUU刷题记录——5
热门文章
- 智能围网,智慧围栏,智能围栏,智能护栏,攀破报警围栏——0误报,无漏报
- 移动端拍照上传图片之后压缩以及图片旋转问题
- 疫情之下,Nutanix推创新性解决方案助力企业发展
- 拼多多店铺名可以进行修改吗?
- 前端面试之计算机基础篇
- 6.数值微积分与方程求解
- 如何卸载twincat3_倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何让不同的PLC程序分线程运行 TC3...
- web大作业 静态网页(地下城与勇士 10页 带视频)
- php 给图片加图片边框,给照片制作简单木质相框 如何制作图片边框 怎么给图片加边框...
- 【CSS从入门到入土系列】—— 列表边框属性专题