C 設計模式之組合模式

2021-07-10 07:38:49 字數 1358 閱讀 1646

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

在自然界中常常存在著許多樹形關係,例如公司的結構,有子公司,部門。又如檔案系統的結構,目錄下邊有目錄或者檔案,而目錄下的目錄又有目錄和檔案,如此遞迴下去。而組合模式就是為了處理這種樹形關係而存在的。

組合模式天生就是為了表達樹形關係的,樹形關係的定義是遞迴的,故而組合模式的定義顯然也是遞迴的。組合模式的uml類圖如下:

在組合模式中存在三個角色:

#include 

#include

#include

#include

using

std::string;

class component ;

virtual

void operation() = 0;

virtual

void add(component *subcomponent){}

virtual

void remove(component *subcomponent){}

virtual component *getchild(std::vector

::size_type index)

};class leaf : public component;

virtual

void operation() override

};class composite : public component ;

virtual

void operation() override

};virtual

void add(component *subcomponent) override

virtual

void remove(component *subcomponent) override

virtual component *getchild(std::vector

::size_type index) override

};int main(void)

執行結果:

here is composite. childen :

here is composite. childen :

here is composite. childen :

here is leaf

here is leaf

here is leaf

here is leaf

here is leaf

c 設計模式之組合模式

組合模式的結構圖 兌現 include include include list using namespace std class ifile class file public ifile virtual void display private string m name 目錄節點 class...

C 設計模式之組合模式

拿大公尺時代來考慮這個問題是最合適不過的。將大公尺時代看作總公司,其他分校看成分公司,各個分公司都有自己的很多部門。英文 composite 將物件組合成樹形結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。拿咱們處在的大公尺時代舉例子。大公尺時代有計算機和...

設計模式之組合模式(C )

組合模式,將物件組合成屬性結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。其uml圖如下 乙個組織有很多子組織,而無論子組織是單獨乙個部門或是乙個分組織。該組織都希望把它們當成一樣的子組織來管理。舉個例子吧,就拿公司來說吧,乙個公司總部為了方便管理希望把分...