装饰器模式
Decorator Pattern
在不改变原有类的基础上,给其增加新的功能。就像人们冬天穿棉袄,夏天穿短袖,以应对不同的需求,而人本身并没有改变,只给其增加不同的装饰来满足不同的需求。
装饰器类需要继承原有类的同时还要关联原有类,并在有参构造中传入原有类。
FilterInputStream就是一个装饰器类。想对InputStream进行扩展增加一些功能,使用装饰器模式对InputStream进行关联
public
class FilterInputStream extends InputStream {
protected volatile InputStream in;
protected FilterInputStream(InputStream in) {
this.in = in;
}
装饰器模式的应用场景:
像上面这种的字节流字符流就是使用的装饰器模式
BufferedReader in1 = new BufferedReader(new InputStreamReader(new FileInputStream(file)));//字符流
DataInputStream in2 = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));//字节流