用乙個生活中的小場景來描述下裝飾器模式比較生動、易懂;
場景:"話說婚後的男人生活可謂是得十八般**樣樣精通才行啊,特別是有了baby之後,週末到了,老婆約閨蜜去逛街,臨走之前留下幾個任務清單:哄baby入睡、洗衣、做飯、清理房間,必須按照任務清單執行,我擦,一般人能忍嗎?一般人有這些能力嗎?但是我有這能力啊 誰讓哥們我是超人呢"
開始擼碼:
先抽象個一般人person類:一般人有啥技能咱也不知道,先抽象著;
public哥們是超人啊,必須有能力啊abstract
class
person
//獲取技能
public
abstract
void
gettasks();
}
public下面是乙個「分水嶺」了,哥們我現在能力不夠啊,怎麼獲取哄baby入睡、洗衣、做飯、清理房間這些能力呢?class
superman : person
}
裝飾器登場,好好包裝下自己:要包裝成什麼樣,我也不知道,但是我知道我自己之前會「打lol」,先搞個裝飾器基類吧(其實這個基類就是為了實現「組合+繼承」)
///實現具體的裝飾能力:///能力裝飾器基類 作用是為了用基類來夠著「組合」
/// public
class
skilldecoraterbase : person
public
override
void
gettasks()
}
///展示能力的時候到了///烹飪裝飾器
/// public
class
cookingdecorater : skilldecoraterbase
public
override
void
gettasks()
}//////
清理房間
/// public
class
cleandecorater : skilldecoraterbase
public
override
void
gettasks()
}//////
哄睡baby
/// public
class
sleepbabydecorater : skilldecoraterbase
public
override
void
gettasks()
}//////
洗衣服
/// public
class
washclothesdecorater : skilldecoraterbase
public
override
void
gettasks()
}
「鈴鈴.....」 老公,把任務清單調整一下,改成:洗衣、清理房間、哄baby入睡、做飯",我擦這女人啊,善變啊,幸虧哥們未雨綢繆.......走你
生活不易,其實沒有什麼歲月靜好,只不過大家都在砥礪前行而已,加油吧,一線擼碼的朋友們。
裝飾器模式
大話設計模式 裝飾器模式 為已有功能動態地新增更多功能,當系統需要新功能,向舊的類中新增新功能,裝飾了原有類的核心職責和行為,而不改變它們 就像包裝袋一樣,有 的包裝袋包裝之前裝好東西的包裝袋 ifndef clothes h define clothes h include using names...
裝飾器模式
裝飾器設計模式 對真實物件動態的新增功能 抽象元件 author zhangjianbin public inte ce icar 俱體構件物件 真實的物件 author zhangjianbin class car implements icar 裝飾器物件 author zhangjianbin...
裝飾器模式
一 概念 裝飾模式能夠實現動態的為物件新增功能,是從乙個物件外部來給物件新增功能。通常給物件新增功能,要麼直接修改物件新增相應的功能,要麼派生對應的子類來擴充套件,抑或是使用物件組合的方式。顯然,直接修改對應的類這種方式並不可取。在物件導向的設計中,而我們也應該 盡量使用物件組合,而不是物件繼承來擴...