当您委托时,您只是在调用一个知道必须做什么的类。您并不真正在乎它是 如何 执行的,您所 关心的 只是您正在调用的类知道需要做什么。
如果我是您,我将创建一个接口并命名该接口
IPrinter(或类似名称的接口),该接口具有一个名为的方法
RealPrinter实现此接口。最后,我将这一行:更改
RealPrinterp = new RealPrinter();为:
IPrinter p = new RealPrinter()。
既然
RealPrinter实现了
IPrinter,那么我肯定知道它有一个
这通常可以提供更大的灵活性,因为您无需将行为嵌入到特定的类中,而是将其留给另一个类。
在这种情况下,要更改应用程序在打印方面的行为,您只需要创建另一个实现的类,
IPrinter然后将以下行更改
IPrinter p = newRealPrinter();为即可
IPrinter p = new MyOtherPrinter();。
public interface IPrinter { void print();}public class RealPrinter implements IPrinter { @Override public void print() { System.out.println("This is RealPrinter"); }}public class RealPrinter2 implements IPrinter { @Override public void print() { System.out.println("This is RealPrinter2"); }}public class Main { public static void main(String...arg){ IPrinter printer = new RealPrinter(); printer.print(); printer = new RealPrinter2(); printer.print(); }}


