


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java 教程 :Java 设计模式之虚拟代理模式虚拟代理模式 (Virtual Proxy) 是一种节省内存的技术,它建议创 建那些占用大量内存或处理复杂的对象时,把创立这类对象推迟到使 用它的时候。在特定的应用中,不同局部的功能由不同的对象组成, 应用启动的时候,不会立即使用所有的对象。在这种情况下,虚拟代 理模式建议推迟对象的创立直到应用程序需要它为止。对象被应用第 一次引用时创立并且同一个实例可以被重用。这种方法优缺点并存。优点: 这种方法的优点是,在应用程序启动时,由于不需要创立和 装载所有的对象,因此加速了应用程序的启动。缺点:因为不能保证特定的应用程序对象被创立,在访问这个对象
2、的任何地方, 都需要检测确认它不是空 (null) 。也就是, 这种检测的时 间消耗是的缺点。应用虚拟代理模式,需要设计一个与真实对象具有相同接口 的单独对象(指虚拟代理)。不同的客户对象可以在创立和使用真实对 象地方用相应的虚拟对象来代替。虚拟对象把真实对象的引用作为它 的实例变量维护。代理对象不要自动创立真实对象,当客户需要真实 对象的效劳时,调用虚拟代理对象上的方法,并且检测真实对象是否 被创立。如果真实对象已经创立,代理把调用转发给真实对象,如果 真实对象没有被创立:1) 代理对象创立真实对象2) 代理对象把这个对象分配给引用变量。3) 代理把调用转发给真实对象 按照这种安排,验证对象
3、存在和转发方法调用这些细节对于 客户是不可见的。客户对象就像和真实对象一样与代理对象进行交互。 因此客户从检测真实对象是否为 null 中解脱出来, 另外,由于创立代 理对象在时间和处理复杂度上要少于创立真实对象。因此,在应用程 序启动的时候,用代理对象代替真实对象初始化。例子:假设我们建立一个 JAVA 程序的集成开发环境( Integrated Development Environment ),这个环境包括三个功能: 编译、运行、 生成 JavaDoc 文档。在新建和编辑 Java 程序时,最为常用的是编译 和运行。至于生成 JavaDoc 文档对于每一个 Java 程序不是必需的。 因
4、此,在 Java 开发环境启动时, 不要创立和装载实现集成开发环境全 部功能的所有对象,仅创立那些在编辑、编译、运行时用到的对象, 保存提供生成 JavaDoc 文档的对象, 这是一个好的设计思想。 这种对 象创立策略能够高效地利用内存空间并且加快了集成开发环境的启动 速度。假设编译、 运行、生成 JavaDoc 文档这些功能分别由三个工 具类提供 ?Compiler 、 Runtime 和 JavaDoc 。客户对象可以访问的不同 IDE 操作的接口以抽象类 IDEOperation 的形式定义 public abstract class IDEOperation private Compi
5、ler cmp;private Runtime rtime;public void compile(String javaFile) cmp pile(javaFile);public void run(String classFile) rtime.run (classFile);/to be delayed until needed.public abstract void generateDocs(String javaFile);public IDEOperation() cmp = new Compiler();rtime = new Runtime();类 IDEOperation
6、 提供了编译、运行 java 程序方法的实现, 作为它构造函数的一局部, 考试 ,大提示 IDEOperation 创立和装载了 进行编译和执行操作的 Compiler 和 Runtime 对象。生成 JavaDoc 文档的方法 generateDocs 方法被设计成抽象的方法,由它的子类来 实现。让我们定义抽象类 IDEOperation 的一个具体子类RealProcessor 。作为 RealProcessor 构造函数的一局部,创立 JavaDoc 对象来提供生成 JavaDoc 文档的效劳,通过使用 JavaDoc 对象功能实现 generateDocs 方法。public clas
7、s RealProcessor extends IDEOperation JavaDoc jdoc;public RealProcessor() super();jdoc = new JavaDoc();public void generateDocs(String javaFile) jdoc.generateDocs(javaFile);通过上面的实现, RealProcessor 类包含了编译、运行和生 成 JavaDoc 文档的所有功能。像我们原来讨论的,生成 JavaDoc 文 档的功能不是每一个 Java 程序所必须的,当 RealProcessor 实例化 的时候,包括负责生成
8、JavaDoc 文档的 JavaDoc 对象的一系列对象 被创立。推迟创立 JavaDoc 对象有以下优点:1 ) 加速了 RealProcessor 对象的创立时间,因为它的构造 函数创立的很少的对象。2) 高效地利用内存,因为在不需要对象效劳的时候,不需要把对象保持在内存中在不改变 RealProcessor 实现的前提下,可以通过定义 IDEOperation 的另外一个子类 ProxyProcessor 来实现虚拟代理。因 为 RealProcessor 和 ProxyProcessor 共享相同的接口,客户对象可 以用 ProxyProcesso【Word是学生和职场人士最常用的一款
9、办公软件之一,99.99% 的人知道它,但其实,这个软件背后,还有一大批隐藏技能你不知道。掌握他们,你将开启新世界的大门。Tab+Enter,在编过号以后,会自动编号段落Ctrl + D 调出字体栏,配合 Tab+Enter 全键盘操作吧Ctrl + L 左对齐, Ctrl + R 右对齐, Ctrl + E 居中Ctrl + F 查找,Ctrl + H 替换。然后关于替换,里面又大有学问!有时候Word文档中有许多多余的空行需要删除,这个时候我们可以完全可以用查找替换来轻松解决。翻开 编辑菜单中的 替换对话框,把光标定位在 查找内容输入框中,单击 高级按钮,选择 特 殊字符中的 段落标记两次,在输入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人店面租赁合同范例
- 光伏骗局合同范本
- 2003建筑施工合同范本
- 游戏媒体行业市场供需预测及投资战略研究咨询报告
- 2019-2025年中国特种物流行业市场调查研究及投资前景预测报告
- 农村住宅购房合同范本
- 年收集、储存及转运2000吨废矿物油建设项目环境影响评估报告书
- 科技前沿生物质能源技术的突破与挑战
- 供热施工建设合同范本
- 个人物品合同范本
- 鞋业-品质培训
- 中级会计实务所得税课件
- 起重指挥人员安全操作规程
- 精神分裂症的护理PPT
- JJG875-2005数字压力计检定规程
- 中小学生安全教育手册全面版
- 09《马克思主义政治经济学概论(第二版)》第九章
- 公司与个人合伙买车经营协议书
- DDI-能力解构词典
- 2015-2022年江西电力职业技术学院高职单招语文/数学/英语笔试参考题库含答案解析
- 1 聚聚散散 教案人教版美术四年级下册
评论
0/150
提交评论