装饰器模式的原理和应用?
设计模式面试题发布于
一、定义
动态地给对象添加额外职责,比继承更灵活。
二、结构
- 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 都有装饰器思想。