装饰者模式
动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
- 装饰者模式同时应用了继承、组合与委托
- 装饰者模式为设计注入了弹力,但同时加入了大量的装饰者类,用来包装具体组件,可能增加程序复杂性
- 装饰者类反映出被装饰的组件类型,通常有相同的基类
- 装饰过程中类的类型发生了改变,故依赖特定类型的代码会发生错误
- 装饰者模式配合工厂模式或者生成器模式,可以简化组件的实例化
- 装饰者可以在被装饰者行为的前后加入行为,甚至替代原行为
java.io是装饰者模式的经典应用。
- PushbackInputStream装饰的InputStream具有回退输入流的功能。
- BufferedInputStream装饰的InputStream采用缓冲区提高效率。
- DataInputStream装饰的InputStream可以直接读写primitive类型。
- LineNumberInutStream装饰的InputStream记提供跟踪当前行号的附加功能。