天天看點

Java設計模式--裝飾模式裝飾模式(别名:包裝類)Decorator Pattern(Another Name: Wrapper)類圖模式的結構與使用簡單的例子

裝飾模式(别名:包裝類)

動态地給對象添加一些額外的職責。就功能來說裝飾模式相比生成子類更為靈活。

Decorator Pattern(Another Name: Wrapper)

Attach additional responsibilities to an object dynamically。Decorators provide a flexible alternative to subclassing for extending functionality.

類圖

Java設計模式--裝飾模式裝飾模式(别名:包裝類)Decorator Pattern(Another Name: Wrapper)類圖模式的結構與使用簡單的例子

模式的結構與使用

裝飾模式的結構中包括四個角色。

+ 抽象元件(Component):抽象元件是一個抽象類或者接口。抽象元件定義了“被裝飾者”需要進行“裝飾”的方法。

+ 具體産品(ConcreteComponent):具體元件是抽象元件的一個子類,具體元件的執行個體稱為“被裝飾者”。

+ 裝飾(Decorator):裝飾也是抽象元件的一個子類,但裝飾還包含一個抽象元件聲明的變量以儲存“被裝飾者”的引用。裝飾可以是抽象類也可以是一個非抽象類,如果是非抽象類,那麼該類的執行個體稱作“裝飾者”。

+ 具體裝飾(ConcreteDecorator):具體裝飾是裝飾的一個非抽象子類,具體裝飾的執行個體稱作“裝飾者”。

簡單的例子