C 設計模式之裝飾模式

2021-09-24 06:21:05 字數 1165 閱讀 2387

**裝飾模式:**動態的給乙個物件新增一些額外的職責,就新增功能來說,裝飾模式比生成子類更為靈活。

有的時候,我們希望給某個類新增一些功能。比如手機,允許你為手機新增特性,比如增加掛件,貼膜等,而不是手機這個類需要這些功能。

一種靈活的設計模式,將手機嵌入到另乙個物件中,由這個物件完成特性的新增,我們稱這個嵌入的物件為裝飾。這個裝飾和它所裝飾的元件介面一致,因此它對使用該元件的客戶透明。

phone *dpa = new decoratorphonea(phone); //裝飾,增加掛件

phone *dpb = new decoratorphoneb(dpa); //裝飾,螢幕貼膜

dpb->showdecorate();

delete dpa;

delete dpb;

return 0;
6300的裝飾

增加掛件

螢幕貼膜

首先我們用phone指標指向iphone的物件,然後用著個phone指標初始化乙個decoratorphonea物件,並用phone指標dpa指向它,然後用著個指標dpa初始化乙個decoratorphoneb物件,並用phone指標dpb指向它,dpb呼叫decoratorphoneb ::showdecorate函式.

c 設計模式之裝飾模式

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

C 設計模式之裝飾模式

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

c 設計模式之裝飾模式

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