15.7 代理模式效果与适用场景

代理模式是常用的结构型设计模式之一,它为对象的间接访问提供了一个解决方案,可以对对象的访问进行控制。代理模式类型较多,其中远程代理、虚拟代理、保护代理等在软件开发中应用非常广泛。

15.7.1 模式优点

代理模式的共同优点如下:

(1) 能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。

(2) 客户端可以针对抽象主题角色进行编程,增加和更换代理类无须修改源代码,符合开闭原则,系统具有较好的灵活性和可扩展性。

此外,不同类型的代理模式也具有独特的优点,例如:

(1) 远程代理为位于两个不同地址空间对象的访问提供了一种实现机制,可以将一些消耗资源较多的对象和操作移至性能更好的计算机上,提高系统的整体运行效率。

(2) 虚拟代理通过一个消耗资源较少的对象来代表一个消耗资源较多的对象,可以在一定程度上节省系统的运行开销。

(3) 缓冲代理为某一个操作的结果提供临时的缓存存储空间,以便在后续使用中能够共享这些结果,优化系统性能,缩短执行时间。

(4) 保护代理可以控制对一个对象的访问权限,为不同用户提供不同级别的使用权限。

15.7.2 模式缺点

代理模式的主要缺点如下:

(1) 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢,例如保护代理。

(2) 实现代理模式需要额外的工作,而且有些代理模式的实现过程较为复杂,例如远程代理。

15.7.3 模式适用场景

代理模式的类型较多,不同类型的代理模式有不同的优缺点,它们应用于不同的场合:

       (1) 当客户端对象需要访问远程主机中的对象时可以使用远程代理。

       (2) 当需要用一个消耗资源较少的对象来代表一个消耗资源较多的对象,从而降低系统开销、缩短运行时间时可以使用虚拟代理,例如一个对象需要很长时间才能完成加载时。

       (3) 当需要为某一个被频繁访问的操作结果提供一个临时存储空间,以供多个客户端共享访问这些结果时可以使用缓冲代理。通过使用缓冲代理,系统无须在客户端每一次访问时都重新执行操作,只需直接从临时缓冲区获取操作结果即可。

       (4) 当需要控制对一个对象的访问,为不同用户提供不同级别的访问权限时可以使用保护代理。

       (5) 当需要为一个对象的访问(引用)提供一些额外的操作时可以使用智能引用代理。

习题

1. Windows操作系统中的应用程序快捷方式是(    )模式的应用实例。

A. 代理 (Proxy)            B. 组合 (Composite)

C. 装饰 (Decorator)         D. 外观 (Facade)

2. 毕业生通过职业介绍所找工作,请问该过程蕴含了哪种设计模式,绘制相应的类图。

3. 在某应用软件中需要记录业务方法的调用日志,在不修改现有业务类的基础上为每一个类提供一个日志记录代理类,在代理类中输出日志,如在业务方法Method()调用之前输出“方法Method()被调用,调用时间为2012-11-5 10:10:10”,调用之后如果没有抛异常则输出“方法Method()调用成功”,否则输出“方法Method()调用失败”。在代理类中调用真实业务类的业务方法,使用代理模式设计该日志记录模块的结构,绘制类图并使用C#语言编程模拟实现。

4. 某软件公司欲开发一款基于C/S的网络图片查看器,具体功能描述如下:用户只需在图片查看器中输入网页URL,程序将自动将该网页所有图片下载到本地,考虑到有些网页图片比较多,而且某些图片文件比较大,因此将先以图标的方式显示图片,不同类型的图片使用不同的图标,并且在图标下面标注该图片的文件名,用户单击图标后可查看真正的图片,界面效果如图15-7所示。试使用虚拟代理模式设计并实现该图片查看器。(注:可以结合多线程机制,使用一个线程显示小图标,同时启动另一个线程在后台加载原图。)

图15-7 图片查看器界面效果图

【友情提示:建议大家有时间的话把这些练习都做一做,有问题欢迎讨论!】

【作者:刘伟(Sunny)  http://blog.csdn.net/lovelion】

代理模式(四):代理模式效果与适用场景相关推荐

  1. JavaScript-设计模式(四) 原型模式

    JavaScript-设计模式(四) 原型模式 定义:原型模式(Prototype pattern)指的是使用一个原型的实例为模板,通过复制一个已经存在的实例来返回新的实例,而不是从头开始新建实例.原 ...

  2. Java设计模式(四):结构性模式(适配器模式、桥接模式、装饰模式、组合模式、外观模式、亨元模式、代理模式)

    目录 一· 适配器设计模式 1.1 现实生活中的适配器例子 1.2 基本介绍 1.3 工作原理 1.4 类适配器模式 1.5 对象适配器模式 1.6 接口适配器模式 1.7 适配器模式在 Spring ...

  3. C++设计模式 | 四种结构型模式——代理模式、外观模式、适配器模式、装饰模式...

    结构型模式:让类和类进行组合,获得更大的结构. 代理模式 代理模式的定义: 为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端 ...

  4. Spring原理之代理与动态代理模式总结(四)

    2019独角兽企业重金招聘Python工程师标准>>> 代理模式 1,什么是代理模式? 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问. 2,代理模式有什么好处? 在 ...

  5. 代理模式——结构型模式(7)

    前言 今天我们将介绍的最后一种结构型模式--代理模式,在介绍它之前,让我们先回顾下上一篇博文对享元模式的学习.享元模式主要是通过运用共享技术有效支持大量细粒度的对象,其本质在于两方面:分离和共享.简单 ...

  6. 第六周 Java语法总结_设计原则_工厂模式_单例模式_代理模式(静态代理_动态代理)_递归_IO流_网络编程(UDP_TCP)_反射_数据库

    文章目录 20.设计原则 1.工厂模式 2.单例模式 1)饿汉式 2)懒汉式 3.Runtime类 4.代理模式 1)静态代理 2)动态代理 动态代理模板 21.递归 22.IO流 1.File 2. ...

  7. [设计模式] - 代理模式(静态代理与动态代理)

    文章目录 一.代理模式简介 1. 什么是代理模式 2. 简单举例 二.代理模式的设计思路 1. 代理模式的构成 1. 静态代理 2. 动态代理 (1)接口代理 (2)Cglib代理 三. 代理模式总结 ...

  8. Java设计模式-之代理模式(动态代理)

    一.简介 1.什么叫代理模式:        简而言之就是:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起 ...

  9. 图解Java设计模式学习笔记——结构型模式(适配器模式、桥接模式、装饰者模式、组合模式、外观模式、享元模式、代理模式)

    一.适配器模式(类适配器.对象适配器.接口适配器) 1.现实生活中的例子 泰国插座用的是两孔的(欧标),可以买个多功能转换插头(适配器),这样就可以使用了国内的电器了. 2.基本介绍 适配器模式(Ad ...

最新文章

  1. java远程桌面图片压缩问题_java用Socket实现的远程桌面浏览 内存溢出问题
  2. 使用DeflateStream压缩与解压
  3. LeetCode 1833. 雪糕的最大数量(贪心)
  4. CBOW模型的数据预处理
  5. Qt之模式、非模式、半模式对话框
  6. jquery ajax调用服务器端指定的函数的三种方式
  7. 门户通专访草根站长九天狼:做站贵在坚持
  8. 必备24个宝藏工具,赶紧收藏,在家做自媒体8天收益4100
  9. Selenium 爬取微信公众号文章并保存为pdf与长图片(2022-06-09更新版)
  10. 4173: 数学 欧拉函数 思路题
  11. java lucene 站内搜索_完整的站内搜索Demo(Lucene.Net+盘古分词)
  12. oppo X907刷机包 COLOROS 1.0 正式版发布 安卓4.2.2
  13. 易语言服务器调试输出为假,跟我入门易语言 7 调试输出与输出调试文本
  14. 鸿蒙系统体验报告,我雷某人摊牌了,鸿蒙2.0版本使用体验汇报
  15. 微信读书总是跳出连接服务器有问题,微信读书经常无响应怎么回事
  16. oracle 数据跟踪软件,oracle数据库跟踪工具
  17. muscle多序列比对简单应用
  18. 《奇点临近》奇点和六大纪元
  19. curl 增加header_curl增加多个头的方法
  20. 正确选择PDF转CAD软件官方下载能够免费使用

热门文章

  1. 简述JAVA中堆内存与栈内存的区别
  2. Egret3D之初体验
  3. 2017-2018网络攻防技术第八周作业
  4. Asp.Net Core 入门(四)—— Model、View、Controller
  5. matlab泊松回归程序,R - 泊松回归( Poisson Regression)
  6. a标签下载文件,浏览器变打开预览的解决方案
  7. 什么是视觉里程计(Visual Odometry)?
  8. 反向传播算法推导过程
  9. “广东省五一劳动奖章”获得者卫晓欣:“她”力量让新兴技术更获认可
  10. uniapp的本地存储