設計模式 10 結構型之組合模式

2021-09-03 07:12:44 字數 1311 閱讀 2179

1 概念

composite模式也叫組合模式,是構造型的設計模式之一。

通過遞迴手段來構造樹形的物件結構,並可以通過乙個物件來訪問整個物件樹。

#include using namespace std;

#include "string"

#include "list"

class ifile

;//檔案結點

class file : public ifile

virtual void display()

virtual int add(ifile *ifile)

virtual int remove(ifile *ifile)

virtual list* getchild()

private:

string m_name;

};//目錄 結點

class dir : public ifile

virtual void display()

virtual int add(ifile *ifile)

virtual int remove(ifile *ifile)

virtual list* getchild()

private:

string m_name;

list*m_list;

};// 遞迴的顯示樹

void showtree(ifile *root, int level)

for (i=0; idisplay();

//2 若根結點 有孩子

//判讀孩子是檔案,顯示名字 )

//判斷孩子是目錄,showtree(子目錄)

list*mylist = root->getchild();

if (mylist != null) //說明是乙個目錄

(*it)->display();

} else

}}}void main()

//dir *dir222 = new dir("222dir");

file *bbbfile = new file("bbb.txt");

dir1->add(dir222);

dir1->add(bbbfile);

cout << "通過 showtree 方式 顯示 root 結點下的 所有子結點" << endl;

showtree(root, 0);

cout<<"hello..."

return ;

}

設計模式 結構型之組合模式

為了將具有樹形結構的特殊邏輯和通常邏輯解耦,將特殊邏輯抽離,並和通常邏輯受統一的介面約束,這樣的類結構叫組合模式 組合模式由三部分組成 統一介面 public inte ce compoisite 葉子結點 public class leaf implements compoisite overri...

設計模式 結構型 組合模式

將物件組合成樹形結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有唯一性。對於樹形結構,當容器物件 如資料夾 的某乙個方法被呼叫時,將遍歷整個樹形結構,尋找也包含這個方法的成員物件 可以是容器物件,也可以是葉子物件 並呼叫執行,牽一而動百,其中使用了遞迴呼叫的機制來...

設計模式複習筆記 (10)結構型模式 組合模式

模式動機 對於樹形結構,當容器物件 如資料夾 的某乙個方法被呼叫時,將遍歷整個樹形結構,尋找也包含這個方法的成員物件 可以是容器物件,也可以是葉子物件,如子資料夾和檔案 並呼叫執行。遞迴呼叫 由於容器物件和葉子物件在功能上的區別,在使用這些物件的客戶端 中必須有區別地對待容器物件和葉子物件,而實際上...