大話設計模式 裝飾模式

2021-08-09 19:35:53 字數 1050 閱讀 8256

裝飾模式:動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。

裝飾模式的uml類圖:

component是定義乙個物件介面,可以給這些物件動態的新增職責。concretecomponent是定義了乙個具體的物件,也可以給這個物件新增一些職責。decorator,裝飾抽象類,繼承了component,從外類來擴充套件component類的功能,但對於component來說,是無需知道decorator的存在的。至於concretedecorator就是具體的裝飾物件,起到給component新增職責的功能。

其實,裝飾模式是利用setcomponent來對物件進行包裝的,這樣每個裝飾的物件的實現就和如何使用這個物件分離開了,每個裝飾物件只關心自己的功能,不需要關心如何能被新增到物件鏈當中。

我們學習模式也要學會變通,如果只有乙個concretecomponent類而沒有抽象的component類,那麼decorator類可以是concretecomponent的乙個子類。同樣道理,如果只有乙個concretedecorator類,那麼就沒有必要建立乙個單獨的decorator類,而可以把decorator和concretedecorator的責任合併成乙個類。

裝飾模式是為已有功能動態的新增更多功能的一種方式,那麼我們什麼時候用呢?

當系統需要新功能的時候,是向舊的類中新增新的**。這些新的**通常裝飾了原有的類的核心職責或者主要行為。但這種做法的問題在於,它們在主類中加入了新的字段,新的方法和新的邏輯,從而增加了主類的複雜度,而這些新加入的東西僅僅是為了滿足一些只在某種特定情況下才會執行的特殊行為的需要。而裝飾模式提供了乙個非常好的解決方案,他把每個要裝飾的功能放在單獨的類中,並讓這個類包裝她所要裝飾的物件,因此,當需要執行特殊行為時,客戶**就可以在執行時根據需要有選擇的,按順序的使用裝飾的物件了。

那麼你總結出裝飾模式的優點了嗎?

這個模式把類中的裝飾功能從類中搬移出去除,這樣可以簡化原有的類。

在用這個模式的時候,一定要記得裝飾模式的裝飾循序很重要!!!

大話設計模式 裝飾模式

動態地給乙個物件新增一些額外的職責。優點 把類中的裝飾功能從類中搬移出去,這樣可以簡化原有的類。有效地把類的核心功能和裝飾功能區分開了。解決的問題 已經開發完畢的物件,後期由於業務需要,對舊的物件需要擴充套件特別多的功能,這時候使用給物件動態地新增新的狀態或者行為 即裝飾模式 方法,而不是使用子類靜...

大話設計模式 裝飾模式

前言穿衣打扮是現在的時尚潮流,我們時常刷 來不斷滿足自己的打扮需求,買個帽子 換條褲子 整雙時尚鞋。需求是沒有極限的,無止境的購物,只要存在這個平台那麼這些裝飾性的購物是不可避免的。這在我們軟體開發中可以看做是為我們例項化的物件新增一些額外的功能,要是我們對於每個都定義個子類來繼承的話,那就是指數增...

《大話設計模式》 裝飾模式

裝飾模式優點 將類中原有的裝飾功能移出,作為單獨的乙個或幾個物件。簡化了原有的類,同時又可以動態的為類增加某一項或某幾項裝飾,而不必修改原類。有效的把類的核心職責和裝飾功能區分開來,並且去除相關類中重複的裝飾邏輯。同時讓類在某些特定的時候,才擁有某些特定的功能。常用場景 加密資料 過濾詞彙。裝飾模式...