大话设计模式C++实现-第7章-代理模式
一、UML图
二、概念
代理模式:为其他对象提供一种代理以控制对这个对象的访问。
三、应用场景
(1)远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
(2)虚拟代理,是根据需要创建开销很大的对象。通过他来存放实例化需要很长时间的真实对象。例如:图片加载的时候。
(3)安全代理,用来控制真是对象访问时的权限。
(4)智能指引,是指当调用真实的对象的时候,代理处理另外一些事。
根本原理:代理模式其实就是在访问对象的时候引入了一定程度的间接性,因为这种间接性,可以附加多种用途。
四、C++实现
(1)Proxy.h
- #include <iostream>
- #include <string>
- //SchoolGirl类
- class SchoolGirl
- {
- private:
- std::string name;
- public:
- void setName(std::string name)
- {
- this->name=name;
- }
- std::string getName()
- {
- return name;
- }
- };
- //Subject类,定义了RealSubject和Proxy的共用接口,这样就可以在任何使用RealSubject的地方使用Proxy
- class IGiveGift
- {
- public:
- virtual void GiveDolls()=0;
- virtual void GiveFlowers()=0;
- virtual void GiveChocolate()=0;
- };
- //RealSubject类,定义了Proxy所代表的真实实体
- class Pursuit:public IGiveGift
- {
- private:
- SchoolGirl* mm;
- public:
- Pursuit(SchoolGirl* mm)
- {
- this->mm=mm;
- }
- void GiveDolls()
- {
- std::cout<<mm->getName()<<" 送你洋娃娃"<<std::endl;
- }
- void GiveFlowers()
- {
- std::cout<<mm->getName()<<" 送你鲜花"<<std::endl;
- }
- void GiveChocolate()
- {
- std::cout<<mm->getName()<<" 送你巧克力"<<std::endl;
- }
- };
- //Proxy类,保存一个引用是的代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以用来替代实体
- class Proxy:public IGiveGift
- {
- private:
- Pursuit* gg;
- public:
- Proxy(SchoolGirl* mm)
- {
- gg=new Pursuit(mm);
- }
- void GiveDolls()
- {
- gg->GiveDolls();
- }
- void GiveFlowers()
- {
- gg->GiveFlowers();
- }
- void GiveChocolate()
- {
- gg->GiveChocolate();
- }
- };
(2)main.cpp
- #include "Proxy.h"
- #include <iostream>
- #include <stdlib.h>
- //Client,客户端
- void main()
- {
- SchoolGirl* jiaojiao=new SchoolGirl();
- jiaojiao->setName("李娇娇");
- Proxy* daili=new Proxy(jiaojiao);
- daili->GiveDolls();
- daili->GiveFlowers();
- daili->GiveChocolate();
- delete jiaojiao;
- jiaojiao=NULL;
- delete daili;
- daili=NULL;
- system("pause");
- }
(3)运行截图
from:http://blog.csdn.net/xiqingnian/article/details/41970165
大话设计模式C++实现-第7章-代理模式相关推荐
- 【设计模式】第二章 代理模式
第二章 代理模式 文章目录 第二章 代理模式 一.简介 一.静态代理 二.动态代理 1.JDK 代理 2.CGLib 代理 三.总结 一.简介 你可能会对这个设计模式感到陌生,但是你对 Spring ...
- 第 15 章 代理模式
第 15 章 代理模式 1.代理模式的基本介绍 代理模式:为一个对象提供一个替身,以控制对这个对象的访问. 即通过代理对象访问目标对象. 代理对象的好处是:可以在目标对象实现的基础上,增强额外的功能操 ...
- 【设计模式2022】第六章 建造者模式
[设计模式2022]第六章 建造者模式 文章目录 [设计模式2022]第六章 建造者模式 一.建造者模式 1.结构 2.案例 3.分析 4.使用场景 5.扩展 6.对比工厂模式 一.建造者模式 将一个 ...
- 【设计模式2022】第四章 工厂模式
[设计模式2022]第四章 工厂模式 文章目录 [设计模式2022]第四章 工厂模式 一.概述 二.简单工厂模式 1.结构 2.实现 3.分析 4.扩展 三.工厂方法模式 1.结构 2.实现 3.分析 ...
- 对设计模式的总结之装饰模式与代理模式
前言 面向对象编程追求的本质-提高扩展性.可维护性.灵活性和复用性.合理利用面向对象6个原则,能够很好的达到要求.如何利用好就是至关重要的了,前人总结了23+个设计模式能够让初学者更容易学到其中的精髓 ...
- 《大话设计模式》之--第7章 为别人做嫁衣----代理模式
第7章 为别人做嫁衣----代理模式 7.1为别人做嫁衣 "小菜,今天见这个叫娇娇的美女见得如何呀?"大鸟一回家来就问小菜. "唉,别提了,人家是有男朋友的." ...
- [大话设计模式C++版] 第17章 在NBA我需要翻译 —— 适配器模式
源码可以在这里找到 大话设计模式C++版 篮球翻译适配器 //Player.h 球员基类 #include <QString>class Player {protected:QString ...
- [大话设计模式C++版] 第12章 牛市股票还会亏钱 —— 外观模式
源码可以在这里找到 大话设计模式C++版 股民炒股代码 //main.cpp #include <iostream>using namespace std;//股票1 class Stoc ...
- [大话设计模式C++版] 第14章 老板回来,我不知道 —— 观察者模式
源码可以在这里找到 大话设计模式C++版 双向耦合的代码 //Secretary.h 秘书类 #include <QList>using namespace std; class Stoc ...
- [大话设计模式C++版] 第13章 好菜每回味不同 —— 建造者模式
源码可以在这里找到 大话设计模式C++版 建造小人一 实现画小人的程序 //Widget.cpp void Widget::paintEvent(QPaintEvent *event) {QPaint ...
最新文章
- leetcode每日一题系列——881. 救生艇
- Python 3标准库,[美] 道格·赫尔曼(Doug Hellmann)
- maven springboot 除去指定的jar包_1. Spring Boot概述
- Linux 内核编码风格【转】
- 黑洞内外,时空弯曲的漩涡
- 简单易懂的 Raft 分布式共识算法讲义
- Java并发编程之CountDownLatch闭锁
- TIOBE 11 月榜单:C、Swift、Go、D 与 Rust 起起伏伏
- 数据结构与算法python—13.堆及python实现与leetcode总结
- Google 中国招聘啦
- MC9S12XEP100 本地RAM不够用了怎么办
- OpenCms显示默认作者
- 数据库系统概论-数据库系统阶段的特点
- 基于esp32 的时间系统
- 某年的月初月末时间戳获取
- axios在ie浏览器下提示promise未定义
- 年薪30万+的HR这样做数据分析!(附关键指标免费模版)
- python写文件byte_python 将字节写入文本文件
- iNotePad流氓软件卸载
- 微博解析:微博揭晓年度百大视频号!视频号规模超50万的背后透露着什么讯息?
热门文章
- win10 c盘压缩卷只能压出一半?或只能压缩出一点空间的完美解决方案
- python中的cols_openpyxl读取列数据或指定行列之iter_cols方法
- 不求人小白也能搭建私有云盘,焕然一新体验
- 调用微信公众号现金红包接口给用户发送红包
- 检查网络端口是否正常
- xshell下载安装
- SPEA将出席MWS China 2022
- (附源码)ssm市级疫情防控管理 毕业设计 030957
- 通过UEFI引导模式修改RAID卡jbod配置
- Unity Shader - ARB_precision_hint_fastest / ARB_precision_hint_nicest 命令