一、什么是代理模式

代理模式:为其他对象提供一种代理可以控制对这个对象的访问。

代理模式(Proxy)结构图

Subject类:

public abstract class Subject {public abstract void request();
}

RealSubject类:

public class RealSubject extends Subject{@Overridepublic void request() {System.out.println("真实的请求!");}}

Proxy类:

public class Proxy extends Subject{RealSubject realSubject;@Overridepublic void request() {if(realSubject==null) {realSubject = new RealSubject();}realSubject.request();}}

客户端Client类:

public class Client {public static void main(String[] args) {Proxy proxy = new Proxy();proxy.request();     }}

输出为:真实的请求!

从结果可以看出,代理(Proxy)将真实对象(RealSubject)的结果返回给了客户端(Client)。

二、代理模式应用

代理模式的使用场合:

1、远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。比如使用WebService,会在项目中生成一个WebReference的文件夹和一些文件,其实它就是代理,这就使得客户端程序调用代理就可以解决远程访问的问题。

2、虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。可以达到性能的优化,假如打开一个很大的HTML网页时,里面可能油很多的文字和图片,但是打开的速度很快,此时,看到的是所有的文字,图片确实一张一张地下载后才能看到。那些未打开的图片框,就是通过虚拟代理来替代了真实的图片,此时代理存储了真实图片的路径和尺寸。

3、安全代理,用来控制真是对象访问时的权限。一般用于对象有不同的访问权限的时候。

4、智能指引,指当调用真实对象时,代理处理另外一些事。如计算真实对象的引用次数,这样,当该对象没有引用时,可以自动释放它;或者当第一次引用一个持久对象时,将它装入内存;或者在访问一个实际对象前,检查是否已经锁定它,以确保其他对象不能改变它。它们都是通过代理模式在访问一个对象时附加一些内务处理。

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

(参考《大话设计模式》)

设计模式学习——代理模式(proxy)相关推荐

  1. 三国杀与设计模式之代理模式(Proxy)

    本人原博地址:http://blog.saymagic.cn/blog.php?id=17 三国杀案例:在五人局中,作为反贼的黄月英借黄忠的刀杀作为忠臣的夏侯惇,从这句话中我们可以总结出一个成语对不对 ...

  2. JS设计模式学习 - 代理模式

    代理模式(Proxy) 为一个对象提供一个代用品或占位符,以便控制对它们的访问. 代理模式是一种非常有意义的模式,在生活中可以找到很多代理模式的场景.比如,明星都有经纪人作为代理. 代理模式的关键是, ...

  3. 二十四种设计模式:代理模式(Proxy Pattern)

    代理模式(Proxy Pattern) 介绍 为其他对象提供一个代理以控制对这个对象的访问. 示例 有一个Message实体类,某对象对它的操作有Insert()和Get()方法,用一个代理来控制对这 ...

  4. 05、人人都会设计模式:代理模式--Proxy

    PS:转载请注明出处 作者: TigerChain 地址: http://www.jianshu.com/p/1b3b6b003032 本文出自 TigerChain 简书 人人都会设计模式 教程简介 ...

  5. swift设计模式学习 - 代理模式

    移动端访问不佳,请访问我的个人博客 设计模式学习的demo地址,欢迎大家学习交流 代理模式 代理模式为其他对象提供一种代理以控制对这个对象的访问,在某些情况下,一个对象不适合或者不能直接引用另一个对象 ...

  6. 设计模式之代理模式(Proxy)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  7. (@WhiteTaken)设计模式学习——代理模式

    今天学习了一下代理模式,代理模式分为很多种.目前感觉有两种是需要学习一下的. 静态代理模式 动态代理模式 1. 静态代理模式 需要被代理的类,实现一个或者多个接口. 代理类需要实现被代理类的接口,在此 ...

  8. Java设计模式之代理模式(Proxy)

    参考http://blog.csdn.net/jianghuxiaoxiami/article/details/3403924 1.代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的 ...

  9. 设计模式学习——代理模式(Proxy Pattern)

    放假啦~学生们要买车票回家了,有汽车票.火车票,等.但是,车站很远,又要考试,怎么办呢?找代理买啊,虽然要多花点钱,但是,说不定在搞活动,有折扣呢~ 1 /// 2 /// @file Selling ...

  10. 「补课」进行时:设计模式(5)——从 LOL 中学习代理模式

    1. 前文汇总 「补课」进行时:设计模式系列 2. 从 LOL 中学习代理模式 我是一个很喜欢玩游戏的人,虽然平时玩游戏的时间并不多,但我也是一个忠实的 LOL 的爱好者,就是段位有点惨不忍睹,常年倔 ...

最新文章

  1. xftp不能上传文件到服务器,xftp传文件到云服务器
  2. 开放API接口 笑话、天气、新闻
  3. BabyXor flower逆向寒假生涯(19/100)
  4. LeetCode_617.合并二叉树
  5. dubbo web工程示例_带有Dubbo的Spring Cloud Alibaba
  6. dmalloc用法快速入门
  7. 计算机最早的运算领域,2013年计算机一级MsOffice模拟试题及答案38
  8. java 方法 示例_Java扫描器具有示例的NextNextShort()方法
  9. php网站商品图片上传代码,PHP实现图片上传代码
  10. ios传感器应用开发最佳实践_同构 javascript 应用开发的最佳实践(Four)
  11. RAID结构介绍以及RAID1、RAID0等各种模式的区别
  12. Ubuntu环境下利用Stress对CPU进行满载及半载压力测试
  13. html钢笔特效,JS仿Photoshop钢笔工具(贝塞尔曲线可视化操作)效果
  14. 全面解析软文营销中的八大技巧
  15. pandas学习手记-柱状图
  16. 微信支付宝多商户解决方案
  17. 一套优秀的MES系统必须具备这3种核心功能
  18. L19-python核心编程-面向对象编程(day1、2)
  19. CourseMaker和CamtasiaStudio谁更能打造精彩微课
  20. 如何画出一张合格的思维导图?

热门文章

  1. MTK6577+Android之GPIO驱动简介
  2. jink下载出现:Failed to download RAMCode . Failed to prepare for programming .
  3. Flask+ZUI 开发小型工具网站(四)——ZUI 前端主页面 tabs
  4. python八皇后问题递归算法_八皇后问题--递归回溯算法(Python实现)
  5. 在日冕病毒时代的爱情-远程工作的技巧,窍门和最佳实践
  6. 模拟人生java版攻略_模拟人生免费版简易攻略小技巧
  7. 高级信息系统项目管理师(高项)高分通过经验分享
  8. KP26--输入成本中心的标准作业量(活动类型价格)
  9. 完全教程 Aircrack-ng破解WEP、WPA-PSK加密利器[zz]
  10. 分页虚拟存储管理——页面置换算法例题