模式動機(composite pattern):將物件組合成樹形結構來表示「整體-部分」層次。操作時,使得對部分的操作與對整體的操作具有一致性。
模式結構圖:
典型的composite結構為:
模式**:
bt_組合模式.h:
#ifndef cp_h
#define cp_h
#include #include using namespace std;
/* 抽象部件類
*/class composite;
class component
virtual void add(component* pc) = 0;
virtual void remove(component* pc) = 0;
virtual component* getchild(unsigned int i) = 0;
virtual void operation() = 0; // 一致的操作介面
};/*
組合容器類,其中既可以放組合器,又可以放葉子結點
*/class composite : public component
virtual void remove(component* pc)
virtual component* getchild(unsigned int i)
virtual void operation()
private:
vectorchildren;
};/*
葉子結點類
*/class leaf : public component
virtual void remove(component* pc)
virtual component* getchild(unsigned int i)
virtual void operation()
};#endif // cp_h
#include "bt_組合模式.h"
int main()
模式優缺點:客戶端可以使用一致的方法操作物件,無論該物件是leaf還是composite。缺點是設計更加複雜了,而且一般只適用於樹狀分層的關係。 結構型模式 組合模式
目錄 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中,從根節點開始,每個節點都可能包...
結構型模式之組合模式
組合模式 composite 將物件組合成 部分 整體 的樹形結構,使使用者對單個物件和組合物件的使用具有一致性。組合模式包含以下三部分 inte ce componentclass composite implements component override public void remove...