組合模式(composite),將物件組合成屬性結構以表示'部分-整體'的層次結構,組合模式使得使用者對單個物件和組合物件的使用具有一致性。
下面給出組合模式的uml圖:
什麼地方適合使用組合模式呢?
當你發現需求中是體現部分與整體層次的結構時,以及你希望使用者可以忽略組合物件與單個物件的不同,統一地使用組合結構中的所有物件時,就應該考慮用組合模式了。
下面回到《大話設計模式》中的公司管理系統的例子:
namespace結果如下所示:public
abstract
void add(company c); //
增加public
abstract
void remove(company c); //
移除public
abstract
void display(int depth); //
顯示public
abstract
void lineofduty(); //
履行職責
}
//具體公司類
class
concretecompany : company
public
override
void
add(company c)
public
override
void
remove(company c)
public
override
void display(int
depth)
}//履行職責
public
override
void
lineofduty()}}
//人力資源部
class
hrdepartment : company
public
override
void
add(company c)
public
override
void
remove(company c)
public
override
void display(int
depth)
public
override
void
lineofduty()
員工招聘培訓管理
", name);}}
//財務部
class
financedepartment : company
public
override
void
add(company c)
public
override
void
remove(company c)
public
override
void display(int
depth)
public
override
void
lineofduty()
公司財務收支管理
", name);}}
class
program
} }
這樣寫的好處呢?組合模式這樣就定義了包含人力資源部和財務部這些基本物件和分公司、辦事處等組合物件的類層次結構。基本物件可以被組合成更複雜的物件,而這個組合物件又何以被組合,這樣不斷地遞迴下去,客戶**中,任何用到基本物件的地方都可以使用組合物件了。同時客戶端是不用關心到底是處理乙個葉節點還是處理乙個組合元件,也就用不著為定義組合而寫一些選擇判斷語句了。簡單說來,組合模式讓客戶可以一直地使用組合結構和單個物件。
組合模式 設計模式 組合模式
1.需求分析 假設要給乙個大公司做辦公管理系統,公司有人力資源部 財務部等,然後公司在其他城市還有分公司,分公司也有自己的人力資源部 財務部等,要求總公司 分公司以及各部分成樹狀結構管理。要完成這麼乙個系統,為了有乙個更好的設計,方便開發的展開,就需要了解乙個設計模式 組合模式。2.定義 將物件組合...
設計模式 組合設計模式
組合模式 composite pattern 又稱部分整體模式,用於把一組相似的物件當做乙個單一的物件,組合模式依據樹形來組合物件,用來表示部分以及整體層次,為結構型設計模式,它建立來物件組的樹形結構。意圖 將物件組合成樹形結構以表示 部分 整體 的結構層次,組合模式使得使用者對單個物件和組合物件的...
設計模式 組合模式 組合模式使用
目錄 組合模式概括 組合模式使用場景 定義 將物件組合成樹形結構以表示 部分 整體 的層次結構 作用 使客戶端對單個物件和組合物件保持一致的處理方式 使用場景 1.希望客戶端可以忽略組合物件與單個物件的差異時 2.處理乙個樹形結構時 優點 清楚的定義分層次的複雜物件,表示物件的全部或部分層次 讓客戶...