1. 概述
1.1 什么是装饰设计模式?
假如现在有一块蛋糕,涂上奶油,就是奶油蛋糕,加上水果就是水果奶油蛋糕,加上生日快乐四个字就是生日蛋糕。
奶油蛋糕,水果奶油蛋糕,生日蛋糕其核心都是蛋糕,经过装饰之后成为目的更明确的蛋糕,更能解决问题。
像这种不断为对象添加装饰的模式就叫 Decorator 模式,Decorator 指的是装饰物。
1.2 装饰者设计模式的角色
- 核心角色(Component):最初的蛋糕,仅仅定义了蛋糕的API;
- 具体角色(ConcreteComponent):实现了核心角色的具体蛋糕;
- 装饰物(Decorator):和Component角色有相同的接口,内部保存了被装饰对象Component;
- 具体装饰物(ConcreteDecorator):具体的Decorator角色;
装饰者设计模式的类图:
2. 装饰者设计模式在 FilterInputStream 中的应用
FilterInputStream 担任的是 装饰物(Decorator)的角色; 核心角色 核心角色(Component)是 InputStream ,具体角色(ConcreteComponent)是 FileInputStream 、ByteArrayInputStream ,具体装饰物(ConcreteDecorator)BufferedInputStream、DataInputStream、LinkNumerInputStream 。
装饰者使用的实例:
InputStream inputStream = new BufferedInputStream(new FileInputStream(""));
参考文献
- 图解设计模式 结成浩
- 图解设计模式 尚硅谷