裝飾模式

壹頁書發表於2017-03-27


裝飾模式的角色

  抽象構件角色(Component):給出一個抽象介面,以規範準備接收附加責任的物件。

  具體構件角色(Concrete Component):定義將要接收附加責任的類。

  裝飾角色(Decorator):持有一個構件(Component)物件的引用,並定義一個與抽象構件介面一致的介面。

  具體裝飾角色(Concrete Decorator):負責給構件物件“貼上”附加的責任。


Java IO中的裝飾模式

  在IO中,具體構件角色是節點流,裝飾角色是過濾流

  FilterInputStream和FilterOutputStream是裝飾角色,而其他派生自它們的類則是具體裝飾角色。

 

裝飾模式的特點

  裝飾物件和真實物件有相同的介面。這樣客戶端物件就可以以和真實物件相同的方式和裝飾物件互動。

  裝飾物件包含一個真實物件的引用(reference)。

  裝飾物件接收所有來自客戶端的請求,它把這些請求轉發給真實的物件。

  裝飾物件可以在轉發這些請求之前或之後附加一些功能。

  這樣就確保了在執行時,不用修改給定物件的結構就可以在外部增加附加的功能。



相關文章