当前位置:首页 » 服务器技术
开发技术指南» 文章正文
    引言: 应用虚拟代理模式,需要设计一个与真实对象具有相同接口的单独对象(指虚拟代理)。
 

 

 ·java设计模式之迭代器模式    »显示摘要«
    摘要:一、 引言 迭代这个名词对于熟悉java的人来说绝对不陌生。我们常常使用jdk提供的迭代接口进行java collection的遍历:iterator it = list.iterator();while(it.hasnext()){ //using “it.next();”do some businesss logic} 而这就是关于迭代器模式应用很好的例子。二、 定义与结构迭代器(iterator)模式,又叫做游标(cursor)模式。gof给出的定义......
 ·java语言与c语言的不同点    »显示摘要«
    摘要:1.java没有预处理指令(如c中的#define,#include,#ifdef等)。c中的常量定义在java中用staticfinal来取代。 2.java中没有c中的全局变量。 3.java中的主类型的size是确定的,而c中主类型的size跟平台相关。 4.java中没有了指针,它使用了类似的句柄来取代指针,但是java中不允许对句柄进行加减,没有取地址操作符之类的东东。 5.java有垃圾收集机制,不需要自己释放空间。 6.java没有......


Java设计模式之虚拟代理模式

描述:

【相关文章:AS500:浪潮存储的平民先锋

虚拟代理模式(virtual proxy)是一种节省内存的技术,它建议创建那些占用大量内存或处理复杂的对象时,把创建这类对象推迟到使用它的时候。在特定的应用中,不同部分的功能由不同的对象组成,应用启动的时候,不会立即使用所有的对象。在这种情况下,虚拟代理模式建议推迟对象的创建直到应用程序需要它为止。对象被应用第一次引用时创建并且同一个实例可以被重用。这种方法优缺点并存。 【扩展阅读:宝德iSCSI IP SAN为核心的存储

【扩展信息:10-GigE SAN将在SNW上崭露头

优点:

这种方法的优点是,在应用程序启动时,由于不需要创建与装载所有的对象,因此加速了应用程序的启动。

缺点:

因为不能保证特定的应用程序对象被创建,在访问这个对象的任何地方,都需要检测确认它不是空(null)。也就是,这种检测的时间消耗是最大的缺点。

应用虚拟代理模式,需要设计一个与真实对象具有相同接口的单独对象(指虚拟代理)。不同的客户对象可以在创建与使用真实对象地方用相应的虚拟对象来代替。虚拟对象把真实对象的引用作为它的实例变量维护。代理对象不要自动创建真实对象,当客户需要真实对象的服务时,调用虚拟代理对象上的方法,并且检测真实对象是否被创建。

如果真实对象已经创建,代理把调用转发给真实对象

1)    代理对象创建真实对象

2)    代理对象把这个对象分配给引用变量。

3)    代理把调用转发给真实对象

按照这种安排,验证对象存在与转发方法调用这些细节对于客户是不可见的。客户对象就像与真实对象一样与代理对象进行交互。因此客户从检测真实对象是否为null中解脱出来,另外,由于创建代理对象在时间与处理复杂度上要少于创建真实对象。因此,在应用程序启动的时候,用代理对象代替真实对象初始化。

例子:

假设我们建立一个java程序的集成开发环境(integrated development environment),这个环境包括三个功能:编译、运行、生成javadoc文档。在新建与编辑java程序时,最为常用的是编译与运行。至于生成javadoc文档对于每一个java程序不是必需的。因此,在java开发环境启动时,不要创建与装载实现集成开发环境全部功能的所有对象,仅创建那些在编辑、编译、运行时用到的对象,保留提供生成javadoc文档的对象,这是一个好的设计思想。这种对象创建策略能够高效地利用内存空间并且加快了集成开发环境的启动速度。

假设编译、运行、生成javadoc文档这些功能分别由三个工具类提供——compiler、runtime与javadoc。客户对象可以访问的不同ide操作的接口以抽象类ideoperation的形式定义。


...   下一页
 ·经典java问题,你能答出几个?    »显示摘要«
    摘要:第一,谈谈final, finally, finalize的区别。 final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 finall......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE