組合模式,將物件組合成樹形結構以表示「部分-整體」的層次結構,組合模式使得使用者對單個物件和組合物件的使用具有一致性。在自然界中常常存在著許多樹形關係,例如公司的結構,有子公司,部門。又如檔案系統的結構,目錄下邊有目錄或者檔案,而目錄下的目錄又有目錄和檔案,如此遞迴下去。而組合模式就是為了處理這種樹形關係而存在的。
組合模式天生就是為了表達樹形關係的,樹形關係的定義是遞迴的,故而組合模式的定義顯然也是遞迴的。組合模式的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圖如下 乙個組織有很多子組織,而無論子組織是單獨乙個部門或是乙個分組織。該組織都希望把它們當成一樣的子組織來管理。舉個例子吧,就拿公司來說吧,乙個公司總部為了方便管理希望把分...