設計模式 1 8組合模式

2022-03-12 12:52:44 字數 1223 閱讀 8971

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

1

class

company 25

virtual ~company(){}

6virtual

void add(company *pcom){}

7virtual

void show(int

depth) {}

8protected:9

string

m_name;

10};

11//

具體公司

12class concretecompany : public

company

1316

virtual ~concretecompany() {}

17void add(company *pcom) //

位於樹的中間,可以增加子樹

18void show(int

depth)

1927

private

:28 listm_listcompany;

29};

30//

具體的部門,財務部

31class financedepartment : public

company

3235

virtual ~financedepartment() {}

36virtual

void show(int depth) //

只需顯示,無限新增函式,因為已是葉結點

3742

};43

//具體的部門,人力資源部

44class hrdepartment :public

company

4548

virtual ~hrdepartment() {}

49virtual

void show(int depth) //

只需顯示,無限新增函式,因為已是葉結點

5055 };

1

intmain()

2

上面的實現方式有缺點,就是記憶體的釋放不好,需要客戶自己動手,非常不方便。有待改進,比較好的做法是讓concretecompany類來釋放。因為所有的指標都是存在concretecompany類的鍊錶中。c++的麻煩,沒有垃圾**機制。

設計模式8 組合模式

組合模式首先想到的就是樹形結構,比如我們常用的檔案結構,請看windows的檔案結構 無論是檔案或者是資料夾,常用操作都是一致的,比如 複製 貼上 剪下 刪除 所佔空間大小。我們並沒有刻意的去分他是資料夾還是檔案。我們可以把資料夾看成是組合物件,把每乙個檔案看成是單個物件。組合模式模糊了這兩個概念,...

《設計模式12 組合模式

組合模式其實是乙個很形象的模式。它也被稱為部分整體模式。組合模式的結構就如同樹狀圖一樣。而樹就是枝幹 葉子的組合,組合模式可以形象的這麼理解。其實資料夾是乙個很好的組合模式的體現。乙個資料夾 樹根root 下可能有多個資料夾 枝幹trunk 可能是單個的檔案 樹葉leaf 而枝幹是可以繼續向下延伸的...

設計模式11 組合模式

組合模式有時又叫部分 整體模式在處理類似樹形結構的問題時比較方便 分支類public class treenode public string getname public void setname string name public treenode getparent public void ...