簡述:
組合模式:將物件組合成樹形結構以表示『部分 - 整體『的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。
組合模式包括:樹類、枝類、葉類。
樹類:組合中的物件宣告介面,在適當的情況下,實現所有類共有介面的預設行為。宣告乙個介面用於訪問和管理枝的子部件。
枝類:定義有枝節點的行為,用來儲存子部件,在樹類介面中實現與子部件有關的操作。
葉類:在組合中表示葉節點物件,葉節點沒有子節點。
組合模式:
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...