天天看點

Java IO流之裝飾器模式

一.裝飾器模式

    1.概念

       裝飾器模式就是在原有類的基礎上,對其進行功能增強,之前我們可以通過繼承的方式來重寫父類方法,改變其行為。裝飾器模式則更靈活,通過實作或者繼承該類的抽象父類或者實作的接口,來實作功能的拓展。其中原有類是被裝飾類,修改它的類是裝飾類。

    2.裝飾器模式前提條件

     ①被裝飾類,必須繼承抽象父類,或者繼承一個接口

     ②裝飾類,需要有一個被裝飾類的屬性,用來接收被裝飾類的所有子類型對象

     ③裝飾類構造器中需要傳入一個被裝飾類的任意一個子類對象

說明一下:之是以裝飾類也需要繼承抽象父類,或者實作接口,是因為可以把它當做抽象父類類型,或是接口類型來用。

二.案例Demo

①首先定義接口 

Java IO流之裝飾器模式

 ②實作子類 Me 沒有任何裝飾 是個裸體的人

Java IO流之裝飾器模式

③現在給 Me裝飾衣服 定義衣服類 

   注意:該類需要傳入一個抽象父類或者接口對象,用來裝飾它

Java IO流之裝飾器模式

 ④定義帽子類Hat 帶帽子

Java IO流之裝飾器模式

 ⑤定義襯衫類shirt 穿花襯衫

Java IO流之裝飾器模式

 測試

Java IO流之裝飾器模式
Java IO流之裝飾器模式

如果 AbstractCloths不實作AbstractPerson

隻能這樣調用功能,不影響結果,但是為了不能展現多态

Java IO流之裝飾器模式
Java IO流之裝飾器模式