參照《大話設計模式》這本書以及網上的一些部落格,對設計模式有了一些基本的認識。
通俗的理解,就是對已經存在某些類進行裝飾,來擴充套件他的一些的功能。
裝飾模式的基本結構是:
component 為統一介面,也是裝飾類和被裝飾類的基本型別
concretecomponent 為具體的實現類,也是被裝飾類,他本身是個具有一些功能的完整的類。
decorator 是裝飾類,實現了component介面的同時還在內部維護了乙個concretecomponent的例項,並可以通過建構函式進行初始化。而decorator本身,通常採用的是預設的實現,他的存在僅僅是乙個宣告:我要產生出一些用於裝飾的子類。而子類才是具有賦有具體裝飾效果的裝飾產品類。
concretedecorator是具體的裝飾產品類,每一種產品都有特定的裝飾效果,可以通過構造器宣告裝飾哪種型別的concretecomponent,從而對其進行裝飾。
在部落格上看到舉的乙個例子,覺得舉得非常好,下面就是copy過來的
公司門口有乙個小攤賣手抓餅和肉夾饃的,有時候中午不想吃飯就會去光顧一下那個小攤,點了手抓餅之後往往還可以在這個基礎之上增加一些配料,例如煎蛋,火腿片等等,每個配料的**都不一樣,不管你怎麼配配料,最終**是手抓餅基礎價加上每一種所選配料**的總和。小攤的**單如下:
如何使用一種設計模式來處理**計算的問題呢,或許我們可以試試裝飾者模式,因為在這裡,主體是手抓餅和肉夾饃,而配料則是裝飾者,我先用uml類圖來描述一下類之間的協作關係。
}輸出結果為:class huotuichang
肉夾饃,雞蛋,雞蛋,火腿腸 y7.7
設計模式之裝飾設計模式
1.目的 動態擴充套件類的行為 開閉原則 對擴充套件開放,對修改關閉 2.要點 裝飾類和被裝飾類都實現同乙個介面或者繼承同乙個類 3.具體實現 被裝飾元件介面 被裝飾元件實現類實現 抽象類構建被裝飾元件實現被裝飾元件介面 裝飾類繼承抽象類 裝飾類 重寫抽象類方法 裝飾 4.例項 被裝飾類介面 pub...
設計模式之裝飾模式
有時如果需要對某乙個類增加乙個功能,可以使用繼承來實現。但是如果想要只是對某乙個物件來增加一項功能,則可能會用到裝飾模式。裝飾模式的主要作用是動態的給某乙個物件新增某些功能。如果此時使用繼承來新增功能時,會產生大量的子類,導致難以維護。裝飾模式的簡要類圖如下 其中 component為待增加功能 即...
設計模式之裝飾模式
template pattern 即模板模式 核心思想 產品不變的部分首先實現,將易變的部分抽象出來供子類完成。例如 一雙運動鞋大體製作流程各廠家基本一致,但是各環節實現細節可有些不一樣,不一樣的部分抽象出來讓不同廠家實現。即先有個框架,細節交給不同廠家實現 程式設計例項 趙本山小品中提到的將大象裝...