組合模式(composite pattern)將物件組合成樹形結構以表示"部分-整體"的層次結構,組合模式使得使用者對單個物件和組合物件的使用具有一致性。掌握組合模式的重點是要理解清楚 "部分/整體" 還有 "單個物件" 與 "組合物件" 的含義。組合模式可以讓客戶端像修改配置檔案一樣簡單的完成本來需要流程控制語句來完成的功能。
#pragma once
#include#include#include// 抽象介面
class ifile
;// 具體類,檔案節點
class file:public ifile
virtual void displayd()
virtual int add(ifile* ifile)
virtual int remove(ifile* ifile)
virtual std::list* getchiled()
private:
std::string m_filename;
};// 具體實現,目錄節點
class dir:public ifile
virtual void displayd()
virtual int add(ifile* ifile)
virtual int remove(ifile* ifile)
virtual std::list* getchiled()
private:
std::string m_dirname;
std::list* m_list_p;
};class compositepattern
; ~compositepattern() {};
};
#include "compositepattern.h"
#include#include"compositepattern.h"
void showtree(ifile* root,int level);
int main(void)
void showtree(ifile* root, int level)
else}}
}
設計模式學習筆記 組合模式
定義 將物件組合成樹形結構以表示 部分 整體 的層次結構,使得使用者對單個物件和組合物件的使用具有一致性。組合模式主要用來處理一些具有 容器特徵 的物件,即他們在充當物件的同時,又可以作為容器包含其他的多個物件。也就是說組合模式表達的是一種樹形的結構,將資料結構中的 樹 用物件導向的方式表現出來了,...
設計模式學習筆記 組合模式
聽名字就像是把什麼東西組合在一起的設計模式,所以 組合模式就是將兩個類中的一些共同的方法抽象在一起然而,很多時候,一些類中的方法很明顯會不一樣,這裡,感覺 headfirst 上那個例子就挺好的,然後我做了下修改。public inte ce menuitem首先去設計乙個選單選項,一些和選單公有的...
設計模式學習筆記之組合模式
組合模式 允許你將物件組合成樹形結構來表現 整體 部分 層次結構。組合能讓客戶以一致的方式處理個別物件以及物件組合。使用組合結構,我們能把相同的操作應用在組合和個別物件上。換句話說,在大多數情況下,我們可以忽略物件組合和個別物件之間的差別。說明 1 組合模式使新增或者刪除子節點變得容易 場景 1 想...