23種設計模式之裝飾模式(Decorator)

2022-02-20 07:25:09 字數 528 閱讀 4799

裝飾模式是一種物件結構型模式,可動態地給乙個物件增加一些額外的職責,就增加物件功能來說,裝飾模式比生成子類實現更為靈活。通過裝飾模式,可以在不影響其他物件的情況下,以動態、透明的方式給單個物件新增職責;當需要動態地給乙個物件增加功能,這些功能可以再動態地被撤銷時可使用裝飾模式;當不能採用生成子類的方法進行擴充時也可使用裝飾模式。

優點:1)比靜態繼承具有更大的靈活性。

2)避免了特徵裝載的類處於層次結構的過高階別。

3)簡化了編碼,因為使用者編寫的每乙個類都針對功能的乙個特定部分,而不用講所有的行為編碼到物件中。

4)改進了物件的擴充套件性,因為使用者可以通過編寫新的類來作出改變。

使用場景:

1)想要在單個物件中動態並且透明地新增責任,而這樣並不會影響其他物件。

2)想要在以後可能要修改的物件中新增責任。

3)當無法通過靜態子類化實現擴充套件時。

decorator 模式

23種設計模式之裝飾模式

職責 動態的為乙個物件增加乙個新的功能 裝飾模式是乙個用於代替繼承的技術,無須通過繼承增加子類就能擴充套件物件的新功能,使用物件的關聯關係代替繼承關係,更加靈活,同時避免型別體系的快速膨脹。component抽象控制項元件 concretecomponent具體構件角色 真實物件 decorator...

23種設計模式之裝飾模式

定義 動態的給乙個物件新增一些額外的職責.就增加功能來說,裝飾模式相比生成子類更為靈活.通俗的說,就是對乙個類或方法進行包裝 裝飾模式的通用類圖 類圖中的四個角色說明如下 component 抽象構件 component是乙個介面或抽象類,就是定義我們最核心的角色,也就是最原始的物件.在裝飾模式中,...

23種設計模式之裝飾者模式

今天我來向大家講解一下裝飾者模式,裝飾者模式的設計原則同樣也是對擴充套件開放,對修改關閉,那我們就有了乙個問題,如何做到對修改關閉,對擴充套件開放呢?我們都知道,裝飾者模式的定義是動態地將責任附加到物件中,其實裝飾者模式也可以說是動態巢狀的乙個過程。就比如舉例來說,假如我現在到乙個商店中買了一杯牛奶...