裝飾器模式
適用場景
- 在不改變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());
}
}
}