以下是代码片段: try { OutputStream out = new FileOutputStream("test.txt"); out = new DataOutputStream(out); } catch(FileNotFoundException e) { e.printStatckTrace(); } 由于FileOutputStream和DataOutputStream有公共的父类OutputStream,因此对对象的装饰对于用户来说几乎是透明的。下面就来看看OutputStream及其子类是如何构成Decorator模式的:
OutputStream是一个抽象类,它是所有输出流的公共父类,其源代码如下:
以下是代码片段: public abstract class OutputStream implements Closeable, Flushable { public abstract void write(int b) throws IOException; ... } 它定义了write(int b)的抽象方法。这相当于Decorator模式中的Component类。