装饰器模式的原理和应用?

发布于

一、定义

动态地给对象添加额外职责,比继承更灵活。

二、结构

  • Component:抽象组件。
  • ConcreteComponent:具体组件。
  • Decorator:装饰器抽象类,持有 Component 引用。
  • ConcreteDecorator:具体装饰器,添加职责。

三、Java IO 中的应用

InputStream is = new FileInputStream("a.txt");
InputStream bis = new BufferedInputStream(is);     // 缓冲装饰
InputStream dis = new DataInputStream(bis);       // 数据类型装饰

四、与继承区别

  • 继承:编译期静态,类爆炸。
  • 装饰器:运行期动态组合,灵活。

五、Spring 中的应用

Spring AOP 的通知链、BeanWrapper 都有装饰器思想。