c 設計模式 組合模式 17

2021-10-09 09:54:32 字數 1749 閱讀 3212

案例:公司管理分級結構

組合模式將物件組合成樹形結構以表示『部分-整體』的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性

組合模式和裝飾模式都可以用來透明的把物件包裝在具有同樣介面的另乙個物件中。

組合模式和裝飾模式都是結構型模式。組合模式著眼於把眾多子物件組織為乙個整體;裝飾模式著眼於在不修改現有物件或從其派生子類的前提下為其增添職責,其子物件只有乙個

#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 設計模式 組合模式

一 組合模式的定義 組合多個物件形成樹形結構以表示具有部分 整體關係的層次結構。二 說明 組合模式關注那些包含葉子構件和容器構件的結構以及它們的組織形式,在葉子結構中不包含成員物件,而容器構件中包含成員物件,這些物件通過遞迴組合可構成乙個樹形結構。由於容器物件和葉子物件在功能上存在區別,因此在使用這...