你所熟知的裝飾者模式

2021-09-12 07:03:23 字數 811 閱讀 4128

直接進行話題,開始我們的夢人自語。

望我的文章能夠讓你對裝飾者有所頓悟,對他的使用有所了解,我也就達到我編作的目的了。

使用場景

解決辦法一

優缺點

解決辦法二

優缺點

使用場景

需求如下  有乙個很久很久以前編寫的類,此時我們需要使用它,並在他的基礎上做擴張。有沒有例子很簡單。

解決辦法一

maybe 我們都會很容易的想到,使用繼承呀,需要擴張哪些方法就重寫哪乙個。是的,講得不錯,的確是這樣的。

優點:很直接,也很容易。直接重寫乙個類。

缺點:如果之前那個很久很久的類,maybe為了維護他內部的安全,並不讓我們外部對他的方法進行重寫,他直接把類定義為不可繼承類。此時我們就沒辦法使用繼承來解決問題了,我們還有什麼其他的辦法來解決這個問題嗎。讓我們看下解決辦法二。

解決辦法二

一般定義為 final的不可以重寫的類,他都會考慮到我們有天一日會對他進行使用的,那麼他應該會使用繼承的方式來實現它本身,我們也只需要定義乙個類,也繼承我們想擴充套件這個類的介面,不過提前是得知道他的介面,不過即使沒有介面也還有另一種解決方法的。我們在我們定義的類中在依賴乙個介面物件。我們就可以傳入我們想要使用的乙個例項物件。

優點:解決無法通過繼承來擴充套件我們的類的問題。

缺點:

裝飾者模式

裝飾者模式 動態地將責任附加到物件上。若要擴張功能,裝飾者提供了比繼承更有彈性的替代方案。裝飾者可以在所委託被裝飾者的行為之前或之後,加上自己的行為,以達到特定的目的。裝飾者與被裝飾者物件具有相同的超型別。include include using namespace std class bever...

裝飾者模式

裝飾者模式,是在不改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。裝飾者模式中的角色 1 被裝飾者抽象component,是乙個介面或抽象類,就是定義最核心的物件,也是最原始的物件,這個類是需要裝飾類的基類。2 被裝飾者具體實現co...

裝飾者模式

裝飾者模式 裝飾者模式的好處是便於擴充套件,對乙個東西不管怎麼變,只需要找到相應的元件去改變它 1.如何組裝在一起 建立主題 packetbodycreator body new packetbodycreator 建立header packethtmlheadercreator html new ...