FilterInputStream
ConcreteDecorator是具体的装饰对象,可以动态的给component添加功能
这是装饰者共同实现的接口
ConcreteDecoratorA
- wrappedObj:Component
+ methodA()+ methodB()+ newBehavior
ConcreteComponent
+ methodA()+ methodB()
PipedOutputStream
Component
InputStream
ConcreteDecoratorB
- wrappedObj:Component- newState:Object
FileDescriptor
ConcreteComponent是我们将动态添加新行为的对象
组件,每一个组件都可以单独使用,或者被装饰者包起来使用
byte数组
PipedInputStream
OutputStream
DateInputStream、BufferedInputStream
ByteArrayInputStream、FileInputStream、PipedInputStream以及StringBufferInputStream
Decorator
ByteArrayOutputStream
FileOutputStream