代理模式

代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。Subject类定义了RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。

UML图如下:

C++实现代码如下:

/* Author: ACb0y Date: 2010年12月15日21:07:50 Model: proxy(代理模式) */ #include <iostream> using namespace std; //抽象接口类(抽象类) class Subject { public: virtual void Request() = 0; }; //真实类 class RealSubject : public Subject { public: void Request() { cout << "真实的请求!" << endl; } }; //代理类 class Proxy : public Subject { private: RealSubject * p_realSubject; public: Proxy() { p_realSubject = NULL; } ~Proxy() { if (p_realSubject != NULL) { delete p_realSubject; } } void Request() { if (p_realSubject == NULL) { p_realSubject = new RealSubject(); } p_realSubject->Request(); } }; int main() { Proxy proxy; proxy.Request(); return 0; }

代理模式的应用

      第一:远程代理,也就是为了一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象在不同地址空间的事实;第二:虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象;第三:安全代理,用来控制真实对象访问时的权限;第四:智能指引,是指当调用真实对象时,代理处理另外一些事。

第一种应用的例子:当我在.net的应用程序的项目中加入了一个web引用,引用一个webService,此时会在项目中生成一个webReference的文件和一些文件,其实它们就是代理,这就使得客户端程序调用代理就可以解决远程访问问题。

第二种应用的例子:因为虚拟代理可以达到性能的最优化,比如说你打开一个很大的HTML网页时,里面可能有很多的文字和图片,但你还是可以很快打开它,此时你看到了所有的文字,但图片却是一张一张地下载后才能看到。哪些未打开的图片框,就是通过虚拟代理来替代了真实的图片,此时代理存储了真实图片的路径和尺寸。

第三种应用的例子:一般用于对象应该有不同的访问权限的时候。

第四种应用的例子:如计算真实对象的引用次数,这样当该对象没有引用时,可以自动释放它,或当第一次引用一个持久对象时,将它装入内存,或在访问一个实际对象前检查是否锁定它,以确保其他对象不能改变它。它们都是通过代理在访问一个对象时附加一些内务处理。

代理模式本质上就是在访问对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。

代理模式-为别人做嫁衣相关推荐

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

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

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

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

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

    代理模式(Proxy):为其他对象提供一种代理以控制这个对象的访问: 代理模式应用:一般来说分为以下几种:     第一种:远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象 ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. tensorflow中的BN层实现
  2. 开源项目-基于Intel VT技术的Linux内核调试器
  3. 和同学沟通,一定是时间效率比较高的
  4. 3pc在mysql的实现_面试官:了解分布式事务?讲讲你理解的2PC和3PC原理
  5. 【实施工程师】Wampserver64橙色无法启动【apache】问题
  6. SpringBoot 精通系列-创建SpringBoot的入门项目
  7. 圣诞节海报这么做?不妨借鉴下这些模板!
  8. 11 Sping框架--AOP的相关概念及其应用
  9. python3.6字典有序_为什么Python3.6字典变得有序了?
  10. 实现类似于百度的自动补全搜索
  11. Linux下在Android模拟器中使用SD 卡的操作步骤
  12. Cocos Creator 详解虚拟摇杆
  13. Altium Designer20下绘制封装、布局、布线及裁板等操作
  14. 关于以太网卡的组成部分:MAC/PHY/变压器
  15. 目前福岛高水平辐射量可能由2号反应堆释放
  16. 诸神之战 | 赛事升级,4.1亿元奖金纳入浙江赛区奖项权益
  17. 虚拟机(VMware Workstation或Hyper-V)装ghost版系统提示“ntldr is missing Press Ctrl+Alt+del to Resta
  18. LTD营销SaaS产品-官微名片介绍
  19. 通过JAVA读取Visio
  20. 详细讲解Html语言的书,HTML语言基础讲解.ppt

热门文章

  1. 区块链能否开启人工智能金融2.0时代?
  2. MATLAB基础示例
  3. checkbox自定义样式
  4. nao机器人学习笔记4
  5. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java基于推荐算法的餐厅点餐系统7czh9
  6. scare机器人如何手眼标定_标定系列一 | 机器人手眼标定的基础理论分析
  7. latex命令替换之\newcommand
  8. 倍福TwinCAT(贝福Beckhoff)基础教程2.1 TwinCAT常见类型简介
  9. css实现一闪而过的光影效果
  10. 骚话连篇-土味情话彩虹屁在线生成工具