-
介绍:装饰模式的作用就是动态的给类添加额外的功能,java IO 的设计就是运用了该设计模式(InputStream有很多装饰子类) 。
-
通用类图
- Component:就是原始的待装饰的类
- ConcreteComponent: 具体的实现类
- Decorator : 装饰类接口并且包含
- ConcreteDecoratorA 装饰A类
-
实例(java.io.InputStream)最好的例子
-
类图
- Component : InputStream
- ConcreteComponent : ByteArrayInputStream,FileInputStream
- Decorator : FilterInputStream
-
ConcreteDecorator
- BufferInputStream:用来从硬盘将数据读入到一个内存缓冲区中,并从此缓冲区提供数据。
- DateInputStream:提供基于多字节的读取方法,可以读取原始数据类型的数据。
- LineNumberInputStream:提供带有行计算功能的过滤输入流。
- PushbackInputStream: 提供特殊的功能,可以将已读取的直接“推回”输入流中。
-
实际使用
public static void main(String[] args) throws FileNotFoundException { InputStream a = new FileInputStream("") ;//要装饰FileInputStream a = new DataInputStream(a);//添加DataInputStream可以读取原始数据类型的数据。 a = new BufferedInputStream(a);//添加缓冲 }
-
类图
-
使用场景 (参考设计模式之禅)
- 当一个类我们需要给他动态的添加功能的时候。
- 动态的给对象增加功能且这些功能可以再动态的撤销
- 需要为一批兄弟改装或者加装功能
版权声明:本文为alreadyfor原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。