装饰器模式
适用场景
- 在不改变classA的情况下,给classA动态增加/增强功能
实现方法
- Decorator继承classA的接口,并依赖classA
public interface A {
void callA();
}
public class AImpl implements A {
......
}
public class Decorator implements A {
private A a = new AImpl();
public void callA() {
a.callA();
}
}
实现例子
- java io: FilterInputStream
public class DecoratorDemo {
public static void main(String[] args) {
try(InputStream in = new FileInputStream("a.txt")) {
FilterInputStream filterInputStream = new DataInputStream(in);
System.out.println(filterInputStream.read());
}
}
}