装饰器模式

透明扩展

场景


动态扩展已有对象功能

代码


Sample
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public interface Component{
void operation();
}
public class ConcreteComponent implements Component{
@Override
void operation(){
//...
}
}
public class Decorator implements Component{
private Component component;
public Decorator(Component component){
this.component = component
}
@Override
public void operation(){
//增强逻辑
component.operation();
//增强逻辑
}
}

调用者

Sample
1
2
Component component = new Decorator(new ConcreteComponent());
component.operation();

特征


  • 扩展装饰类和目标对象实现一样接口
  • 扩展类在目标基础上增强逻辑

应用


java.io.InputStream的各种包装类比如BufferedInputStream