將物件組合成樹形結構以表示「部分-整體」的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性,重點在於一致性,介面的一致性,這樣就能大量減少**裡的各種if else.
組合模式,是為了解決整體和部分的一致對待的問題而產生的,要求這個整體與部分有一致的操作或行為。部分和整體都繼承於乙個公共的抽象類,這樣,外部使用它們時是一致的,不用管是整體還是部分,使用乙個方法即可遍歷整體中的所有的部分。就像乙個樹形結構一樣。
//將物件組合成樹形結構以表示「部分-整體」的層次結構。
//組合模式使得使用者對單個物件和組合物件的使用具有一致性
class
company
virtual
~company()
virtual
void
add(company *pcom)
virtual
void
show
(int depth)
protected
: string m_name;};
//具體公司
class
concretecompany
:public company
virtual
~concretecompany()
void
add(company *pcom)
//位於樹的中間,可以增加子樹
void
show
(int depth)
cout<
list
>
::iterator iter=m_listcompany.
begin()
;for
(; iter != m_listcompany.
end(
); iter++
)//顯示下層結點
}private
: list
> m_listcompany;};
//具體的部門,財務部
class
financedepartment
:public company
virtual
~financedepartment()
virtual
void
show
(int depth)
//只需顯示,無限新增函式,因為已是葉結點
cout<
;//具體的部門,人力資源部
class
hrdepartment
:public company
virtual
~hrdepartment()
virtual
void
show
(int depth)
//只需顯示,無限新增函式,因為已是葉結點
cout<
;int
main()
輸出:總公司
--財務部
--人力資源部
--分公司a
----財務部
----人力資源部
--分公司b
----財務部
----人力資源部
請按任意鍵繼續.
..
c 設計模式 組合模式 17
案例 公司管理分級結構 組合模式將物件組合成樹形結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性 組合模式和裝飾模式都可以用來透明的把物件包裝在具有同樣介面的另乙個物件中。組合模式和裝飾模式都是結構型模式。組合模式著眼於把眾多子物件組織為乙個整體 裝飾模式著...
組合模式 設計模式 組合模式
1.需求分析 假設要給乙個大公司做辦公管理系統,公司有人力資源部 財務部等,然後公司在其他城市還有分公司,分公司也有自己的人力資源部 財務部等,要求總公司 分公司以及各部分成樹狀結構管理。要完成這麼乙個系統,為了有乙個更好的設計,方便開發的展開,就需要了解乙個設計模式 組合模式。2.定義 將物件組合...
17 求組合數 I
需要根據組合數問題的資料範圍來選擇用哪一種方式來實現求組合數 上式的證明 要求從a個蘋果裡選b個蘋果的方案數,首先人為的在a個蘋果當中隨意標記乙個蘋果,然後把選法分為兩種情況 從a個蘋果裡選b個蘋果的選法中包含這個蘋果,以及從a個蘋果裡選b個蘋果的選法中不包含這個蘋果 c a 1,b 1 c a 1...