设计模式学习——代理模式(proxy)
一、什么是代理模式
代理模式:为其他对象提供一种代理可以控制对这个对象的访问。
代理模式(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)相关推荐
- 三国杀与设计模式之代理模式(Proxy)
本人原博地址:http://blog.saymagic.cn/blog.php?id=17 三国杀案例:在五人局中,作为反贼的黄月英借黄忠的刀杀作为忠臣的夏侯惇,从这句话中我们可以总结出一个成语对不对 ...
- JS设计模式学习 - 代理模式
代理模式(Proxy) 为一个对象提供一个代用品或占位符,以便控制对它们的访问. 代理模式是一种非常有意义的模式,在生活中可以找到很多代理模式的场景.比如,明星都有经纪人作为代理. 代理模式的关键是, ...
- 二十四种设计模式:代理模式(Proxy Pattern)
代理模式(Proxy Pattern) 介绍 为其他对象提供一个代理以控制对这个对象的访问. 示例 有一个Message实体类,某对象对它的操作有Insert()和Get()方法,用一个代理来控制对这 ...
- 05、人人都会设计模式:代理模式--Proxy
PS:转载请注明出处 作者: TigerChain 地址: http://www.jianshu.com/p/1b3b6b003032 本文出自 TigerChain 简书 人人都会设计模式 教程简介 ...
- swift设计模式学习 - 代理模式
移动端访问不佳,请访问我的个人博客 设计模式学习的demo地址,欢迎大家学习交流 代理模式 代理模式为其他对象提供一种代理以控制对这个对象的访问,在某些情况下,一个对象不适合或者不能直接引用另一个对象 ...
- 设计模式之代理模式(Proxy)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- (@WhiteTaken)设计模式学习——代理模式
今天学习了一下代理模式,代理模式分为很多种.目前感觉有两种是需要学习一下的. 静态代理模式 动态代理模式 1. 静态代理模式 需要被代理的类,实现一个或者多个接口. 代理类需要实现被代理类的接口,在此 ...
- Java设计模式之代理模式(Proxy)
参考http://blog.csdn.net/jianghuxiaoxiami/article/details/3403924 1.代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的 ...
- 设计模式学习——代理模式(Proxy Pattern)
放假啦~学生们要买车票回家了,有汽车票.火车票,等.但是,车站很远,又要考试,怎么办呢?找代理买啊,虽然要多花点钱,但是,说不定在搞活动,有折扣呢~ 1 /// 2 /// @file Selling ...
- 「补课」进行时:设计模式(5)——从 LOL 中学习代理模式
1. 前文汇总 「补课」进行时:设计模式系列 2. 从 LOL 中学习代理模式 我是一个很喜欢玩游戏的人,虽然平时玩游戏的时间并不多,但我也是一个忠实的 LOL 的爱好者,就是段位有点惨不忍睹,常年倔 ...
最新文章
- xftp不能上传文件到服务器,xftp传文件到云服务器
- 开放API接口 笑话、天气、新闻
- BabyXor flower逆向寒假生涯(19/100)
- LeetCode_617.合并二叉树
- dubbo web工程示例_带有Dubbo的Spring Cloud Alibaba
- dmalloc用法快速入门
- 计算机最早的运算领域,2013年计算机一级MsOffice模拟试题及答案38
- java 方法 示例_Java扫描器具有示例的NextNextShort()方法
- php网站商品图片上传代码,PHP实现图片上传代码
- ios传感器应用开发最佳实践_同构 javascript 应用开发的最佳实践(Four)
- RAID结构介绍以及RAID1、RAID0等各种模式的区别
- Ubuntu环境下利用Stress对CPU进行满载及半载压力测试
- html钢笔特效,JS仿Photoshop钢笔工具(贝塞尔曲线可视化操作)效果
- 全面解析软文营销中的八大技巧
- pandas学习手记-柱状图
- 微信支付宝多商户解决方案
- 一套优秀的MES系统必须具备这3种核心功能
- L19-python核心编程-面向对象编程(day1、2)
- CourseMaker和CamtasiaStudio谁更能打造精彩微课
- 如何画出一张合格的思维导图?
热门文章
- MTK6577+Android之GPIO驱动简介
- jink下载出现:Failed to download RAMCode . Failed to prepare for programming .
- Flask+ZUI 开发小型工具网站(四)——ZUI 前端主页面 tabs
- python八皇后问题递归算法_八皇后问题--递归回溯算法(Python实现)
- 在日冕病毒时代的爱情-远程工作的技巧,窍门和最佳实践
- 模拟人生java版攻略_模拟人生免费版简易攻略小技巧
- 高级信息系统项目管理师(高项)高分通过经验分享
- KP26--输入成本中心的标准作业量(活动类型价格)
- 完全教程 Aircrack-ng破解WEP、WPA-PSK加密利器[zz]
- 分页虚拟存储管理——页面置换算法例题