菜鳥編碼記之 裝飾模式

2021-06-24 18:16:26 字數 669 閱讀 9217

裝飾模式的作用:動態地對乙個個現有物件新增一些額外的功能,如給遊戲裡主角換上不同的裝備擁有不同的能力,給牆刷上不同的染料就有不同的顏色,就增加功能本身而言,裝飾模式繼承或者生成子類更為靈活

理解:如果通過實現各種介面,來達到新增各種附加功能的目的,問題是 這個類已經存在,重新去改下類的定義,這就違背了開閉原則,然而裝飾模式是不在改變原有類和繼承的情況下動態的擴充套件乙個物件的功

使用裝飾者模式的時候需要注意一下幾點內容:

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

(2)裝飾物件包含乙個真實物件的引用。

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

(4)裝飾物件可以在**這些請求以前或以後增加一些附加功能。這樣就確保了在執行時,不用修改給定物件的結構就可以在外部增加附加的功能。在物件導向的設計中,通常是通過繼承來實現對給定類的功能擴充套件。然而,裝飾者模式,不需要子類可以在應用程式執行時,動態擴充套件功能,更加方便、靈活。

適用裝飾者模式場合:

1.當我們需要為某個現有的物件,動態的增加乙個新的功能或職責時,可以考慮使用裝飾模式。

2.當某個物件的職責經常發生變化或者經常需要動態的增加職責,避免為了適應這樣的變化,而增加繼承子類擴充套件的方式,因為這種方式會造成子類膨脹的速度過快,難以控制。

菜鳥公升級記 狀態模式

狀態模式 當乙個物件的內在狀態改變時允許改變其行為 不同的狀態對應不同的行為 這個物件看起來像是改變了其類。class program 抽象狀態類,定義乙個介面以封裝與context的乙個特定狀態相關的行為 abstract class state 具體狀態類,每乙個子類實現乙個與context的乙...

菜鳥公升級記 介面卡模式

介面卡模式 adapter 將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的哪些類可以一起工作。舉例1 部分顯示器是vga的插頭,但是大部分膝上型電腦只有hdmi的插孔,要想膝上型電腦和顯示器一起工作,則必須需要乙個 vga轉hdmi的轉換器 就相...

設計模式之裝飾模式

有時如果需要對某乙個類增加乙個功能,可以使用繼承來實現。但是如果想要只是對某乙個物件來增加一項功能,則可能會用到裝飾模式。裝飾模式的主要作用是動態的給某乙個物件新增某些功能。如果此時使用繼承來新增功能時,會產生大量的子類,導致難以維護。裝飾模式的簡要類圖如下 其中 component為待增加功能 即...