/** * 通过代理角色声明真实角色功能的模式 * @author ruis * */ //为打印机创建一个界面 public interface Printer {
void print(); } |
//控制台打印机 public class ConsolePrinter implements Printer {
private String fileName; public ConsolePrinter(String fileName){ this.fileName=fileName; } //重写方法:打印文件名称 @Override public void print() { System.out.println("Displaying"+fileName); }
}
|
//代理打印机 public class ProxyPrinter implements Printer {
private ConsolePrinter consolePrinter; private String fileName; public ProxyPrinter(String fileName){ this.fileName=fileName; } //重写方法,如果控制台打印机==Null,创建控制台打印机 打印文件名称 @Override public void print() { if(consolePrinter==null){ consolePrinter = new ConsolePrinter(fileName); } consolePrinter.print(); }
}
|
//创建一台代理打印机 名字是test 并打印 public class Main {
public static void main(String[] args){ Printer image=new ProxyPrinter("test"); image.print(); } //Displayingtest }
|