組合模式的結構圖:
兌現**:
#include #include #include "list"
using namespace std;
class ifile
;class file :public ifile
virtual void display()
private:
string m_name;
};//目錄節點
class dir :public ifile
virtual void display()
virtual int remove(ifile *ifile)
virtual list* getchild()
private:
string m_name;
list*m_list;
};void showtree(ifile*root,int level)
int i=0;
for(i=0;idisplay();
list*list1 = root->getchild();
if(list1!=null)//c盤下有東西可能是檔案也可能是目錄,可能都有
(*it)->display();
}else//說明是目錄
} }}void main()
{ dir *root = new dir("c:");
dir *dir1 = new dir("dir1");
dir *dir2 = new dir("dir2");
file *file1 = new file("file1");
file *file2 = new file("file2");
//往目錄c盤下新增檔案和目錄
root->add(dir1);
root->add(file1);
dir1->add(file2);
dir1->add(dir2);
//root->display();
//獲取root下的集合
list*list1 = root->getchild();
showtree(root,0);
cout執行結果:
C 設計模式之組合模式
組合模式,將物件組合成樹形結構以表示 部分 整體 的層次結構,組合模式使得使用者對單個物件和組合物件的使用具有一致性。在自然界中常常存在著許多樹形關係,例如公司的結構,有子公司,部門。又如檔案系統的結構,目錄下邊有目錄或者檔案,而目錄下的目錄又有目錄和檔案,如此遞迴下去。而組合模式就是為了處理這種樹...
C 設計模式之組合模式
拿大公尺時代來考慮這個問題是最合適不過的。將大公尺時代看作總公司,其他分校看成分公司,各個分公司都有自己的很多部門。英文 composite 將物件組合成樹形結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。拿咱們處在的大公尺時代舉例子。大公尺時代有計算機和...
設計模式之組合模式(C )
組合模式,將物件組合成屬性結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。其uml圖如下 乙個組織有很多子組織,而無論子組織是單獨乙個部門或是乙個分組織。該組織都希望把它們當成一樣的子組織來管理。舉個例子吧,就拿公司來說吧,乙個公司總部為了方便管理希望把分...