定义:不改变原类文件, 不使用继承,动态拓展一个类的对象。
    通过创建一个包装对象,装饰来包裹真实的对象。
    参考连接:https://www.cnblogs.com/zuoxiaolong/p/pattern11.html

    个人理解:

    1. 原始接口或者抽象类A,原始接口实现类A1
    2. 装饰器接口B 装饰器接口内部 对A1初始化
    3. 如果要拓展A1, 则对装饰器接口B进行拓展, 增加额外的方法。 同时也要提供跟A1一样的方法, 里面调用A1的方法, 实际是对A1的方法外面套着一次方法 加了一层封装。

    JAVA IO使用装饰器
    InputStream装饰的目标抽象类
    FileInputstream 是待装饰的具体对象

    IO
    1)InputStream是抽象类,是所有字节输入流的超类。
    2)ByteArrayInputStream、StringBufferInputStream、FileInputStream是三种基本的介质流,它们分别将Byte数组、StringBuffer、和本地文件中读取数据。PipedInputStream是从与其它线程共用的管道中读取数据;
    3)ObjectInputStream和所有FilterInputStream的子类都是装饰流(装饰器模式的主角)。
    4)FileInputStream 文件输入流,用于读取本地文件中的字节数据。
    https://blog.csdn.net/zxc123e/article/details/51538189 包装模式