Java設計模式之裝飾模式

2021-06-01 22:49:49 字數 625 閱讀 3100

裝飾模式是在不必改變原類檔案和使用繼承的情況下,動態的擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。

裝飾模式的特點;

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

(2) 裝飾物件包含乙個真實物件的索引(reference)

(3) 裝飾物件接受所有的來自客戶端的請求。它把這些請求**給真實的物件。

(4) 裝飾物件可以在**這些請求以前或以後增加一些附加功能。這樣就確保了在執行時,不用修改給定物件的結構就可以在外部增加附加的功能。在物件導向的設計中,通常是通過繼承來實現對給定類的功能擴充套件。

下**列舉了裝飾模式和繼承的不同:

裝飾模式 vs 繼承 裝飾模式 繼承

用來擴充套件特定物件的功能 用來擴充套件一類物件的功能

不需要子類 需要子類

動態地 靜態地

執行時分配職責 編譯時分派職責

防止由於子類而導致的複雜和混亂 導致很多子類產生,在一些場合,報漏類的層次

更多的靈活性 缺乏靈活性

對於乙個給定的物件,同時可能有不同的裝飾物件,客戶端可以通過它的需要選擇合適的裝飾物件傳送訊息。 對於所有可能的聯合,客戶期望

很容易增加任何的 困難

Java設計模式之裝飾模式

動態的給乙個物件新增一些額外的職責.就增加功能來說,裝飾模式相比生成子類更為靈活.需要透明且動態的擴充套件類的功能時.其中涉及到的角色有 這裡模擬一下人穿衣服的場景,沒錢的穿便宜衣服,有錢的穿貴衣服 首先定義人的抽象類 public abstract class person public clas...

設計模式之裝飾模式 Java

23種設計模式之一,英文叫decorator pattern,又叫裝飾者模式。裝飾模式是在不必改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。component是定義乙個物件介面,可以給這些物件動態新增職責,concretecomp...

java設計模式之裝飾設計模式

裝飾設計模式 裝飾設計模式就是給乙個物件增加一些新的功能,而且是動態的。要求裝飾物件和被裝飾物件實現同乙個介面,裝飾物件持有被裝飾物件的例項 設計思路 第一步 定義介面action,在介面中提供乙個方法work 第二步 定義被裝飾類child,實現介面action 第三步 定義裝飾類adult,實現...