🍥 装饰器模式
2022年6月20日
- 设计模式
🍥 装饰器模式
1. 概述
1) 是什么
- 装饰器模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。
- 动态给一个对象增加功能,这些功能可以再动态的撤消,可以增加由一些基本功能的排列组合而产生的非常大量的功能
- 动态地给一个对象添加一些额外的职责;就增加功能来说,Decorator模式相比生成子类更为灵活
- 俄罗斯套娃一样层层包裹,层层装饰,每套一层就会多出一些功能出来,我们更可以自由搭配,实现不同的组合功能
2) 优点
3) 缺点
2. 代码示例
1) 场景 & 目标
- 商店中提供 2 种基本饮料:
- 红茶
- 咖啡
- 每种饮料都可以添加以下配料:
- 牛奶
- 焦糖
- 芒果
- 用户可自定义自己想要什么饮料,并加什么配料,配料数量也不限,求它的价钱
2) 代码示例
3. 应用
1) Wrapper & Decorator
- Spring中用到的包装器模式在类名上有两种表现:
- 一种是类名中含有 Wrapper,
- 另一种是类名中含有 Decorator
2) Java IO包里的众多流处理类
DataInputStream is = new DataInputStream( // 将输入流转换为 java 基本数据类型
new BufferedInputStream( // 给输入流添加 缓冲 功能
new FileInputStream(filePath)));