結構型模式之組合模式實現

2021-08-02 09:46:19 字數 1540 閱讀 3230

組合模式是構造型模式之一,通過遞迴手段來構造樹形的物件結構,並可以通過乙個物件來訪問整個物件樹。

component(樹形結構的節點抽象)

為所有的物件定義統一的介面(公共屬性,行為等的定義);

提供管理子節點物件的介面方法;

【可選】提供管理父節點物件的介面方法

leaf(樹形結構的葉節點)

component的實現子類

composite(樹形結構的枝節點)

component的實現子類

適用於:單個物件和組合物件的使用具有一致性。將物件組合成樹形結構以表示「部分-整體」。

#include

#include

#include

using

namespace

std;

class ifile

;class file :public ifile

~file()

}virtual

void display()

virtual

int add(ifile *file)

virtual

int remove(ifile *file)

virtual

list

* getchild()

private:

string m_name;

list

* m_list;

};class floder :public ifile

~floder()

}virtual

void display()

virtual

int add(ifile *file)

virtual

int remove(ifile *file)

virtual

list

* getchild()

private:

string m_name;

list

* m_list;

};void showtree(ifile *ifile, int level)

ifile->display();

l = ifile->getchild();

if (l != null)

(*it)->display();

}else}}

}int main(void)

*///開發乙個遞迴函式 現在根結點下的所有子結點

cout

<< "測試遞迴函式"

<< endl;

showtree(root, 0);

delete txt2;

delete dir2;

delete txt1;

delete dir1;

delete root;

return

0;}

結構型模式之組合模式

組合模式 composite 將物件組合成 部分 整體 的樹形結構,使使用者對單個物件和組合物件的使用具有一致性。組合模式包含以下三部分 inte ce componentclass composite implements component override public void remove...

結構型模式 組合模式

目錄 1.組合模式概述 1.1 定義 1.2 作用 1.3 應用場景 1.4 分類 1.4.1 透明組合模式 1.4.2 安全組合模式 2.類圖 3.角色 4.案例 4.1 說明 4.2 建立 4.3 分析 5.優缺點 5.1 優點 5.2 缺點 在組合模式中通過多個物件形成樹形結構以表示整體 部分...

結構型模式 組合

將物件組合成樹形結構以表示 部分 整體 的層次結構,使得使用者對單個物件和組合物件的使用具有一致性。組合模式 composite 經常用於樹形結構,為了簡化 使用composite可以把乙個葉子節點與乙個父節點統一起來處理。我們來看乙個具體的例子。在xml或html中,從根節點開始,每個節點都可能包...