案例:公司管理分級結構
組合模式將物件組合成樹形結構以表示『部分-整體』的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性
組合模式和裝飾模式都可以用來透明的把物件包裝在具有同樣介面的另乙個物件中。
組合模式和裝飾模式都是結構型模式。組合模式著眼於把眾多子物件組織為乙個整體;裝飾模式著眼於在不修改現有物件或從其派生子類的前提下為其增添職責,其子物件只有乙個
#ifndef _composite_pattern_
#define _composite_pattern_
#include
#include
class
company
std::string getname()
virtual
void
add(std::shared_ptr spcompany)=0
;virtual
void
remove
(std::shared_ptr spcompany)=0
;virtual
void
display
(const
int idepth)=0
;virtual
void
lineofduty()
=0;private
: std::string m_scompanyname;};
class
concretecompany
:public company
void
add(std::shared_ptr spcompany)
void
remove
(std::shared_ptr spcompany)}}
void
display
(const
int idepth)
}void
lineofduty()
}private
: std::vector> m_veccompany;};
class
hrdepartment
:public company
void
add(std::shared_ptr spcompany)
void
remove
(std::shared_ptr spcompany)
void
display
(const
int idepth)
void
lineofduty()
};class
financedepartment
:public company
void
add(std::shared_ptr spcompany)
void
remove
(std::shared_ptr spcompany)
void
display
(const
int idepth)
void
lineofduty()
};#endif
// !_composite_pattern_
客戶端呼叫
#include
"composite_pattern.h"
#include
intmain()
組合模式 17
將物件組合成樹形結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性,重點在於一致性,介面的一致性,這樣就能大量減少 裡的各種if else.組合模式,是為了解決整體和部分的一致對待的問題而產生的,要求這個整體與部分有一致的操作或行為。部分和整體都繼承於乙個公共...
C 設計模式 組合模式
一.概述 組合模式,將物件組合成樹形結構以表示 部分 整體 的層次結構,組合模式使得使用者對單個物件和組合物件的使用具有一致性。結構 1.component 是組合中的物件宣告介面,在適當的情況下,實現所有類共有介面的預設行為。宣告乙個介面用於訪問和管理component子部件。2.leaf 在組合...
C 設計模式 組合模式
一 組合模式的定義 組合多個物件形成樹形結構以表示具有部分 整體關係的層次結構。二 說明 組合模式關注那些包含葉子構件和容器構件的結構以及它們的組織形式,在葉子結構中不包含成員物件,而容器構件中包含成員物件,這些物件通過遞迴組合可構成乙個樹形結構。由於容器物件和葉子物件在功能上存在區別,因此在使用這...