Decorator(装饰模式)的应用场景:
1. 想要增加多个机能,且这些要追加的机能能够自由的组合
2.想要增加某个处理,但不想改变原来的接口
技术要点
使用继承+聚合
举例说明
现在有几个对参数check的类 Parameter里有getName, getValue, setName, setValue, 还有一个validate方法,
子类的xxxCheck overite validate方法提供具体的check机能,假如现在已有MinLengthCheck和MaxLengthCheck两个check,
先要追加a<x<b类似的check,那么,我们不需要从Parameter继承一个class,全部重写MinLengthCheck和MaxLengthCheck的逻辑,
只需要继承的同时,聚合MinLengthCheck和MaxLengthCheck类,就能通过组合现有的类的机能去提供新的技能,而且这种组合是随机应变的,不会出现组合爆炸。
Parameter
_________△__________________
| | |
| | |
MinMaxLenghtCheck MinLengthCheck MaxLengthCheck
◇ ^ ^
| | |
| | |
|_____________ |______________|
JDK中的应用
java.io包下的类,基本采用这个模式设计,所以你可以
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(“c://test.txt”));