解决的问题
在不改变原有对象结构情况下,为类动态增加功能,避免了通过继承方式进行功能扩充导致的类体系臃肿 ,且可以采用任意顺序组织这些功能。
装饰者模式类图
Component target = new ConcreteComponent();
ConcreteDecoratorA decA = new ConcreteDecoratorA(target);
ConcreteDecoratorB decB = new ConcreteDecoratorB(decA);
IO流使用装饰器模式
InputStream in = new FileInputStream("file.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
reader.readLine();