装饰者模式

装饰者模式

动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

  • 装饰者模式同时应用了继承、组合与委托
  • 装饰者模式为设计注入了弹力,但同时加入了大量的装饰者类,用来包装具体组件,可能增加程序复杂性
  • 装饰者类反映出被装饰的组件类型,通常有相同的基类
  • 装饰过程中类的类型发生了改变,故依赖特定类型的代码会发生错误
  • 装饰者模式配合工厂模式或者生成器模式,可以简化组件的实例化
  • 装饰者可以在被装饰者行为的前后加入行为,甚至替代原行为

java.io是装饰者模式的经典应用。

装饰者模式_第1张图片
java.io 部分类图
  • PushbackInputStream装饰的InputStream具有回退输入流的功能。
  • BufferedInputStream装饰的InputStream采用缓冲区提高效率。
  • DataInputStream装饰的InputStream可以直接读写primitive类型。
  • LineNumberInutStream装饰的InputStream记提供跟踪当前行号的附加功能。

你可能感兴趣的:(装饰者模式)