zoukankan      html  css  js  c++  java
  • 第三节:装饰者模式在JDK中的应用

    装饰者模式在 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 }

      

  • 相关阅读:
    Python 多核 多线程 调度
    mysql-select for update
    Python logging模块
    TCP/IP和HTTP协议与Socket的区别联系
    DNS+CDN
    wget命令
    Cannot find module 'webpack-cli/bin/config-yargs
    TS7015: Element implicitly has an 'any' type because index expression is not of type 'number'
    js 创建私有变量
    报错集锦及解决方案
  • 原文地址:https://www.cnblogs.com/niujifei/p/14319211.html
Copyright © 2011-2022 走看看