設計模式 組合模式

2021-09-30 12:56:11 字數 1668 閱讀 8863

組合模式:允許你將物件組合成樹形結構來表現「整體/部分」層次結構。組合能讓客戶以一致的方式處理個別物件以及物件組合。

討論模型:在飯店的選單中有總選單,總選單裡包含午餐選單和咖啡選單,咖啡選單又包含甜品選單,每種選單中都有屬於該選單項的食物,建立乙個組合模式使客戶可以使用一致的方式處理選單和食物。

選單組合menucomponent基類:

#ifndef menucomponent_h

#define menucomponent_h

#include "string.h"

class menucomponent

virtual

void remove(menucomponent* m)

virtual menucomponent* getchild(int i)

virtual std::string getname()

virtual

int getprice()

virtual

void print()

};#endif /* menucomponent_h */

選單類(整體部分)

#ifndef menu_h

#define menu_h

#include "menucomponent.h"

#include "string.h"

#include "vector"

class menu:public menucomponent

void add(menucomponent* m)

void remove(menucomponent* m)}}

menucomponent* getchild(int i)

std::string getname()

void print()

}private:

std::string name;

std::vector

v;};

#endif /* menu_h */

食物(部分)

#ifndef menuitem_h

#define menuitem_h

#include "menucomponent.h"

#include "string.h"

class menuitem :public menucomponent

std::string getname()

int getprice()

void print()

private:

std::string name;

int price;

};#endif /* menuitem_h */

#include 

#include "menucomponent.h"

#include "menuitem.h"

#include "menu.h"

int main(int argc, const

char * ar**)

組合模式 設計模式 組合模式

1.需求分析 假設要給乙個大公司做辦公管理系統,公司有人力資源部 財務部等,然後公司在其他城市還有分公司,分公司也有自己的人力資源部 財務部等,要求總公司 分公司以及各部分成樹狀結構管理。要完成這麼乙個系統,為了有乙個更好的設計,方便開發的展開,就需要了解乙個設計模式 組合模式。2.定義 將物件組合...

設計模式 組合模式 組合模式使用

目錄 組合模式概括 組合模式使用場景 定義 將物件組合成樹形結構以表示 部分 整體 的層次結構 作用 使客戶端對單個物件和組合物件保持一致的處理方式 使用場景 1.希望客戶端可以忽略組合物件與單個物件的差異時 2.處理乙個樹形結構時 優點 清楚的定義分層次的複雜物件,表示物件的全部或部分層次 讓客戶...

設計模式 組合設計模式

組合模式 composite pattern 又稱部分整體模式,用於把一組相似的物件當做乙個單一的物件,組合模式依據樹形來組合物件,用來表示部分以及整體層次,為結構型設計模式,它建立來物件組的樹形結構。意圖 將物件組合成樹形結構以表示 部分 整體 的結構層次,組合模式使得使用者對單個物件和組合物件的...