问题 填空题

阅读以下说明和Java代码,将应填入 (n) 处的字句写在对应栏内。

[说明]

在一些大型系统中,大多数的功能在初始化时要花费很多时间,如果在启动的时候,所有功能(连不用的功能)都要全面初始化的话,会连带影响到应用软件要花很多时间才能启动。因此常将程序设计成到了实际要使用某种功能的阶段才初始化该功能。

以下示例展示了Proxy(代理)模式,PrinterProxy类执行一些比较“轻”的方法——设置名称和取得名称,需要真正执行“重”的方法——真正打印——时才初始Print类。图6-1显示了各个类间的关系。

[图6-1]

[Java代码]

//Printable.Java

publiC (1) Printable{

public abstract void setPrinterName(String name);

public abstract String getprinterName();

public abstract void print(String string);

}

//Printer.Java

public class Printer implements Printable{

private String name;

public Printer(){

System.out.println("正在产生Printer的对象实例");

}

public Printer(String name){

this.name=name;

heavyJob("正在产生Printer的对象实例("+name+")");

public void setPrinterName(String name){

this.name=name;

public String getPrinterName(){

return name;

public void print(String string){

System.out.println("===" +name+" ====");

System.out.println(string);

}

}

//PrinterProxy.Java

public class PrinterProxy (2) Printable{

private String name;

private Printer real;

public PrinterProxy(){}

public PrinterProxy(String name){

this.name=name;

}

public gynchronized void setPrinterName(String name){

if( (3) ){

real.setPrinterName(name);

}

this.name=name;

}

public String getprinterName(){

return name;

}

public void print(String string){

(4)

real.print(string);

}

private synchronized void realize(){//产生真正的Printer对象

if(real==null){

real= (5)

}

}

}

(5)处填()。

答案

参考答案:new Printer(name)

解析:

在Java中,interface和abstract class均能包含抽象方法,“类是用来继承的(extends),接口是用来实现的(implements)。”由类Printer的声明可判知Printable应为接口,故空(1)应填interface。 因Printable是一个接口,故空(2)应填implements。该空比较简单。 real是一个引用,调用之前当然得先判断real是否为空,只有不是空才能进行调用,否则将出现不可预期的结果,因此空(3)应填real !-NULL。 在执行打印时,需要保证已经正确生成了real对象,否则打印将无法完成,这也正是Proxy的核心所在,到真正需要打印时,才生产real对象,因此空(4)应填realize()。 real是Printer对象引用,空(5)是生成一个Printer对象,注意Printer类的构造函数是Printer(string name),故应填new Printer(name)。顺便说一下,生成real对象时,进行Treal是否为空的判断,并将方法realize()声明为synchronized,这是为了避免生成多个real对象,有一个即可。

单项选择题 案例分析题
单项选择题


(本大题为单项选择题,在每小题四个选项中选择最恰当的一项。)

下面是一篇请示的正文部分,阅读后回答问题:
二○○七年二月二十五日,××市委、市政府《关于加快发展旅游业的决定》(××字[××××]七号)明确指出,“同意建立旅游建设发展专项资金,其部分资金来源于交通建设附加费的分配,并将此分配比例从原来的5%调高到10%”。对此,我委认为该措施无疑有利于筹集资金,促进旅游业发展,但当初决定征收旅游业交通建设附加费的目的,主要是筹集地铁资金,现要提高旅游专项资金在交通建设附加费中的分配比例,必然减少地铁资金的来源。地铁工程建设07年底总需投资30亿元。筹资任务十分艰巨,而今年地铁资金缺口更大,需开拓更多的资金来源。因此,减少筹集地铁资金的做法会导致工期拖长和投资增大,不利于工程建设。鉴于此,我委建议在地铁建设期内,逐级调高旅游专项资金在交通建设附加费中的分配比例,仍执行旅游专项资金在交通建设附加费中占百分之五的分配比例不变。

按照国家标准《出版物上数字用法的规定》,对文中的数字修改,不正确的一项是( )。

A.“二○○七年二月二十五日”改为“2007年2月25日”

B.“××字[××××]七号”改为“××字[××××]7号”

C.“百分之五”改为“5%”

D.“5%调高到10%”改为“百分之五调高到百分之十”