阅读以下说明和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) ;
(1)处填()。