解決的問題
在不改變原有對象結構情況下,爲類動態增加功能,避免了通過繼承方式進行功能擴充導致的類體系臃腫 ,且可以採用任意順序組織這些功能。
裝飾者模式類圖
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();