定義:動態地給一個對象增加一些額外的職責。
角色:
- 抽象構件:Component
- 具體構件:ConcreteComponent
- 抽象裝飾類:Decorator
- 具體裝飾類:ConcreteDecorator
模式分析:
具體構件類和抽象構件類都實現了抽象構件接口,模式的關鍵在於抽象裝飾類,這個類實現了抽象構件接口並且組合了抽象構件,在其構造函數中設置參數注入具體構件對象,在其裝飾方法中調用這個注入的構件類已有的方法,再通過具體裝飾類的繼承,添加其他方法和功能。
核心理解
裝飾模式做的事情是動態修改被裝飾者的一些屬性方法等等。
根據依賴倒轉原則,待裝飾的類和裝飾者類都要實現自同一個抽象構件接口,在裝飾者類的構造方法里要注入一個待裝飾者對象,裝飾者類和抽象構件接口是組合關系和接口實現關系,在裝飾者類中提供一個可擴展的方法供子類重寫。
具體的裝飾者類繼承抽象裝飾者類,重寫其擴展方法完成對待裝飾對象的裝飾!