装饰者模式在 JDK 应用的源码分析

 Java 的 IO 结构,FilterInputStream 就是一个装饰者:

 

public abstract class InputStream implements Closeable{}  是一个抽象类,即Component

public class FilterInputStream extends InputStream {  //是一个装饰者类的 Decorator

  protected  volatile InputStream in //被装饰的对象}

class DataInputStream extends FilterInputStream implements DataInput {}  //FilterInputStream 的子类

 

  代码案例:

 1 public class Decorator {
 2     public static void main(String[] args) throws Exception {
 3 
 4         /**
 5          * 说明:
 6          *  1、InputStream 是抽象类,类似于前面的 Drink
 7          *  2、FileInputStream 是 InputStream 子类,类似于前面的 LongBlack
 8          *  3、FilterInputStream 是 InputStream 子类,类似于前面 Decorator 修饰者
 9          *  4、DataInputStream 是FilterInputStream 子类,具体的修饰者,类似前面 Milk
10          *  5、FilterInputStream 类有 protected volatile InputStream in; 即含被装饰者
11          *  6、分析得出 JDK 的 IO 体系中,就是使用了装饰者模式
12          */
13         DataInputStream dis = new DataInputStream(new FileInputStream("d:\\abc.txt"));
14         int read = dis.read();
15         System.out.println(read);
16         dis.close();
17     }
18 }

 

  

posted on 2021-01-23 22:03  格物致知_Tony  阅读(264)  评论(0编辑  收藏  举报