C 設計模式之裝飾模式

2021-08-15 23:51:27 字數 546 閱讀 9618

在實際的應用過程中,裝飾模式還是被經常用到的。裝飾模式的本質是符合設計的原則:開閉原則(對修改封閉對新增開放)。也就是說對於之前設計好的乙個類,如果想在這個類上新增一些新的功能或者在這個類的業務上新增一下新的業務,就可以在這個類的外層包裝乙個新類,新類就可以擴充套件你想要擴充套件的內容,這就是我理解的設計模式中的裝飾模式。

舉個列子:比如我有一架飛機,它可以飛:

class

plane

但是這架飛機我需要給飛機新增一下戰鬥功能,比如新增飛彈,這樣我就可以在這個類的外層再次包裝乙個新的類,把當前的類作為核心引數傳進去:

class newplane
在使用的時候就可以:

newpalne* newp = new newplane();

plane* plane = plane;

newp->setplane(plane);

以後所有的操作都是對,newplane這個類進行的操作,這樣就保證了,可以在這個新類上對原來類的擴充套件。

c 設計模式之裝飾模式

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

C 設計模式之裝飾模式

動態地給乙個物件增加一些額外的職責,就增加物件的功能來說,裝飾模式比生成子類更為靈活。裝飾模式是一種物件結構模式。我們常常通過繼承的方式來對乙個既有的類進行功能新增,但繼承方式有顯著的侷限性,因為 例如在視窗控制項當中,要增加新的功能如增加滾動條,增加背景,通過繼承的方式來增加新的功能,有下面的解決...

c 設計模式之裝飾模式

裝飾器模式 動態地給乙個物件新增一些額外的工作職責,就增加功能來說,裝飾器模式比繼承的子類更靈活。裝飾模式的類結構圖 兌現 include include using namespace std class car class runcar public car public void showca...