015 第19章 組合模式

2022-07-17 03:15:08 字數 2622 閱讀 9319

簡述:

組合模式:將物件組合成樹形結構以表示『部分 - 整體『的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。

組合模式包括:樹類、枝類、葉類。

樹類:組合中的物件宣告介面,在適當的情況下,實現所有類共有介面的預設行為。宣告乙個介面用於訪問和管理枝的子部件。

枝類:定義有枝節點的行為,用來儲存子部件,在樹類介面中實現與子部件有關的操作。

葉類:在組合中表示葉節點物件,葉節點沒有子節點。

組合模式:

1 #include 2 #include 

3 #include 4

using

namespace

std;56

//樹類

7class

ccomponent814

15virtual

void add(ccomponent* pcomponent) = 0;16

virtual

void remove(ccomponent* pcomponent) = 0;17

virtual

void display(int ndepth) = 0;18

};19

20//

葉類21

class cleaf : public

ccomponent

2225

26void add(ccomponent*pcomponent)

2730

31void remove(ccomponent*pcomponent)

3235

36void display(int

ndepth)

3742

};43

44//

枝類45

class ccomposite : public

ccomponent46;

5253

void add(ccomponent*pcomponent)

5455

void remove(ccomponent*pcomponent)

5657

void display(int

ndepth)

5866

};67

68int

main()

69

輸出結果:

例:公司組織結構

**如下:

#include #include 

#include

using

namespace

std;

//抽象公司類(樹類)

class

ccompany

virtual

void add(ccompany* pcompany) = 0

;

virtual

void remove(ccompany* pcompan) = 0

;

virtual

void display(int ndepth) = 0

;

virtual

void lineofduty() = 0;};

//具體公司類(枝類)

class cconcretecompany : public

ccompany

virtual

void add(ccompany*pcompany)

virtual

void remove(ccompany*pcompany)

virtual

void display(int

ndepth)

virtual

void

lineofduty()

};//

人力資源部(葉類)

class chrdepartment : public

ccompany

virtual

void add(ccompany*pcompany) {}

virtual

void remove(ccompany*pcompany) {}

virtual

void display(int

ndepth)

virtual

void

lineofduty()

};//

財務部class cfinancedepartment : public

ccompany

virtual

void add(ccompany*pcompany) {}

virtual

void remove(ccompany*pcompany) {}

virtual

void display(int

ndepth)

virtual

void

lineofduty()

};int

main()

輸出結果:

設計模式19 組合模式

將一種物件組合成樹狀層次結構的模式。1 對樹上的物件處理一致。2 可以容易在組合內加入新的物件,而不改源 1 對樹的邏輯需要樹立清楚。2 不容易使用繼承的方法增加功能。1 抽象構件 樹葉和樹枝的抽象類。2 樹葉構件 沒有子節點。3 樹枝構件 管理樹葉構件。1.抽象構件 class component...

設計模式19 組合模式

組合物件介面宣告 class component 增加或移除樹葉或樹枝的功能 virtual void add component c 0 virtual void remove component c 0 virtual void display int depth 0 protected str...

第19章 Flash裝置驅動

本文摘自 偶有較小改動 linux 裝置驅動開發詳解 宋寶華 編著 人民郵電出版社 留作紀念。living park 第19章 flash裝置驅動 19.1 linux flash驅動結構 19.1.1 linux mtd系統層次 在linux系統中,提供了mtd memory technology...