Java筹划情势之虚拟代理情势[Java编程]
本文“Java筹划情势之虚拟代理情势[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
虚拟代理情势(Virtual Proxy)是一种节俭内存的技术,它倡议成立那些占用大量内存或处理复杂的对象时,把成立这类对象推迟到利用它的时刻.在特定的利用中,差别部份的功效由差别的对象构成,利用启动的时刻,不会当即便用全部的对象.在这种情形下,虚拟代理情势倡议推迟对象的成立直到利用程序需求它为止.对象被利用第一次引用时成立并且同一个实例可以被重用.这种办法优缺陷并存.
长处:
这种办法的长处是,在利用程序启动时,由于不需求成立和装载全部的对象,因此加快了利用程序的启动.
缺陷:
因为不能保证特定的利用程序对象被成立,在拜候这个对象的任何地方,都需求检测确认它不是空(null).也就是,这种检测的时间损耗是最大的缺陷.
利用虚拟代理情势,需求计划一个与真实对象具有相同接口的单独对象(指虚拟代理).差别的客户对象可以在成立和利用真实对象地方用呼应的虚拟对象来替换.虚拟对象把真实对象的引用作为它的实例变量保护.代理对象不要自动成立真实对象,当客户需求真实对象的服务时,调用虚拟代理对象上的办法,并且检测真实对象能否被成立.
假如真实对象已经成立,代理把调用转发给真实对象,假如真实对象没有被成立:
1) 代理对象成立真实对象
2) 代理对象把这个对象分配给引用变量.
3) 代理把调用转发给真实对象
按照这种安置,考证对象存在和转发办法调用这些细节关于客户是不可见的.客户对象就像和真实对象一样与代理对象举行交互.因此客户从检测真实对象能否为null中摆脱出来,别的,由于成立代理对象在时间和处理复杂度上要少于成立真实对象.因此,在利用程序启动的时刻,用代理对象替换真实对象初始化.
例子:
假定我们成立一个JAVA程序的集成开辟环境(Integrated Development Environment),这个环境包含三个功效:编译、运行、生成JavaDoc文档.在新建和编辑Java程序时,最为常用的是编译和运行.至于生成JavaDoc文档关于每一个Java程序不是必须的.因此,在Java开辟环境启动时,不要成立和装载实现集成开辟环境全部功效的全部对象,仅成立那些在编辑、编译、运行时用到的对象,保存供应生成JavaDoc文档的对象,这是一个好的计划思惟.这种对象成立战略可以高效地操纵内存空间并且加快了集成开辟环境的启动速度.
假定编译、运行、生成JavaDoc文档这些功效辨别由三个工具类供应??Compiler、Runtime和JavaDoc.客户对象可以拜候的差别IDE操作的接口以抽象类IDEOperation的情势定义.
public abstract class IDEOperation {
private Compiler cmp;
private Runtime rtime;
public void compile(String javaFile) {
cmp.compile(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供应了编译、运行java程序办法的实现,作为它构造函数的一部份,IDEOperation成立和装载了举行编译和履行操作的Compiler和Runtime对象.生成JavaDoc文档的办法generateDocs办法被计划成抽象的办法,由它的子类来实现.
让我们定义抽象类IDEOperation的一个具体子类RealProcessor.作为RealProcessor构造函数的一部份,成立JavaDoc对象来供应生成JavaDoc文档的服务,通过利用JavaDoc对象功效实现generateDocs办法.
public class RealProcessor extends IDEOperation {
JavaDoc jdoc;
public RealProcessor() {
super();
jdoc = new JavaDoc();
}
public void generateDocs(String javaFile) {
jdoc.generateDocs(javaFile);
}
}
通过上面的实现,RealProcessor类包含了编译、运行和生成JavaDoc文档的全部功效.像我们本来谈论的,生成JavaDoc文档的功效不是每一个Java程序所必须的,当RealProcessor实例化的时刻,包含负责生成JavaDoc文档的JavaDoc对象的一系列对象被成立.推迟成立JavaDoc对象有以下长处:
1) 加快了RealProcessor对象的成立时间,因为它的构造函数成立的很少的对象.
2) 高效地操纵内存,因为在不需求对象服务的时刻,不需求把对象保持在内存中.
在不改变RealProcessor实现的前提下,可以通过定义IDEOperation的别的一个子类ProxyProcessor来实现虚拟代理.因为RealProcessor和ProxyProcessor同享相同的接口,客户对象可以用ProxyProcesso
以上是“Java筹划情势之虚拟代理情势[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |