裝飾模式(别名:包裝類)
動态地給對象添加一些額外的職責。就功能來說裝飾模式相比生成子類更為靈活。
Decorator Pattern(Another Name: Wrapper)
Attach additional responsibilities to an object dynamically。Decorators provide a flexible alternative to subclassing for extending functionality.
類圖
模式的結構與使用
裝飾模式的結構中包括四個角色。
+ 抽象元件(Component):抽象元件是一個抽象類或者接口。抽象元件定義了“被裝飾者”需要進行“裝飾”的方法。
+ 具體産品(ConcreteComponent):具體元件是抽象元件的一個子類,具體元件的執行個體稱為“被裝飾者”。
+ 裝飾(Decorator):裝飾也是抽象元件的一個子類,但裝飾還包含一個抽象元件聲明的變量以儲存“被裝飾者”的引用。裝飾可以是抽象類也可以是一個非抽象類,如果是非抽象類,那麼該類的執行個體稱作“裝飾者”。
+ 具體裝飾(ConcreteDecorator):具體裝飾是裝飾的一個非抽象子類,具體裝飾的執行個體稱作“裝飾者”。