天天看點

設計模式13 - 裝飾模式【Decorator Pattern】

裝飾模式

定義:

指的是在 “不必改變原類檔案 ” 和 “不使用繼承” 的情況下,動态地擴充一個對象的功能。它是通過建立一個包裝對象,也就是裝飾來包裹真實的對象。

舉例 ( 如何讓家長在差的成績單基礎上看到感覺更好的成績 ) :

正常的學校下發成績單流程:

為了更好的修飾成績單,在拿到成績單之前做些手腳。先說出最高分,然後說自己的排名。

引出問題:

如果我們還想繼續修改,那麼就要繼續去繼承,不僅繼承超過了兩層,而且類的數量會激增,維護起來也麻煩。還有基類的順序可能會有改變。是以,要想辦法引出第三種類來解決這種問題,具體新增内容的執行順序放到子類進行。這時,裝飾者模式就出現了。

總結:

使用了裝飾者模式,不改變了原來的類檔案,而且不使用內建,動态的、可選擇性的裝飾去完成了類的拓展。

最後引出類圖:

設計模式13 - 裝飾模式【Decorator Pattern】