裝飾器模式

2022-06-05 09:12:13 字數 1951 閱讀 2952

用乙個生活中的小場景來描述下裝飾器模式比較生動、易懂;

場景:"話說婚後的男人生活可謂是得十八般**樣樣精通才行啊,特別是有了baby之後,週末到了,老婆約閨蜜去逛街,臨走之前留下幾個任務清單:哄baby入睡、洗衣、做飯、清理房間,必須按照任務清單執行,我擦,一般人能忍嗎?一般人有這些能力嗎?但是我有這能力啊   誰讓哥們我是超人呢"

開始擼碼:

先抽象個一般人person類:一般人有啥技能咱也不知道,先抽象著;

public

abstract

class

person

//獲取技能

public

abstract

void

gettasks();

}

哥們是超人啊,必須有能力啊

public

class

superman : person

}

下面是乙個「分水嶺」了,哥們我現在能力不夠啊,怎麼獲取哄baby入睡、洗衣、做飯、清理房間這些能力呢?

裝飾器登場,好好包裝下自己:要包裝成什麼樣,我也不知道,但是我知道我自己之前會「打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...

裝飾器模式

一 概念 裝飾模式能夠實現動態的為物件新增功能,是從乙個物件外部來給物件新增功能。通常給物件新增功能,要麼直接修改物件新增相應的功能,要麼派生對應的子類來擴充套件,抑或是使用物件組合的方式。顯然,直接修改對應的類這種方式並不可取。在物件導向的設計中,而我們也應該 盡量使用物件組合,而不是物件繼承來擴...