1、為什麼要用組合模式?
當我們面對乙個樹形結構物件或者說是具備整體——部分的結構的物件時,我們又不想對於整體和部分分開進行處理,而是想用乙個方法對整體和部分進行統一處理,舉個例子,乙個公司有人事部、it部、財務部,人事部有小a、小b、小c,it部有小d、小e、小f,財務部有小g,小h,小i,我們想對這三個部門的人的工資進行調整,統一增加1000元,那麼我們對於這個具有整體-部分的物件,沒有必要對於部門和具體員工進行區別處理,也就是說沒有必要對於部門所有員工加工資使用乙個方法,對於具體員工加工資使用另乙個方法,我們統一使用乙個方法就可以解決問題,這就是組合模式的初衷,**如下:
部門和具體員工公有的方法抽象出來的抽象類
abstract
class
employee
部門類
```csharp
class
department
:employee
public
override
void
delete
(employee employee)
public
override
employee
get(
int i)
public
override
void
addsalary
(double salary)
}}
``
具體員工類
class
concreteemployee
:employee
public
string departmentname
public
concreteemployee
(string name,
string department)
public
override
void
addsalary
(double salary)
工資增加了"
,this
.departmentname,
this
.name, salary);}
public
override
void
add(
employee employee)
public
override
void
delete
(employee employee)
public
override
employee
get(
int i)
}
呼叫結果
public
partial
class
form1
:form
呼叫結果
人事部小a工資增加了2000
人事部小b工資增加了2000
人事部小c工資增加了2000
it部小d工資增加了2000
it部小e工資增加了2000
it部小f工資增加了2000
財務部小g工資增加了2000
財務部小h工資增加了2000
財務部小i工資增加了2000
從呼叫的部門**看,我們只是在最後呼叫了一次addsalary方法,但是我們給三個部門的所有員工的工資都增加了2000。
C 設計模式 組合模式
一.概述 組合模式,將物件組合成樹形結構以表示 部分 整體 的層次結構,組合模式使得使用者對單個物件和組合物件的使用具有一致性。結構 1.component 是組合中的物件宣告介面,在適當的情況下,實現所有類共有介面的預設行為。宣告乙個介面用於訪問和管理component子部件。2.leaf 在組合...
C 設計模式 組合模式
一 組合模式的定義 組合多個物件形成樹形結構以表示具有部分 整體關係的層次結構。二 說明 組合模式關注那些包含葉子構件和容器構件的結構以及它們的組織形式,在葉子結構中不包含成員物件,而容器構件中包含成員物件,這些物件通過遞迴組合可構成乙個樹形結構。由於容器物件和葉子物件在功能上存在區別,因此在使用這...
C 設計模式 組合模式
ifndef composite h define composite h include include include 說明 組合模式的關鍵是定義了乙個抽象構件類,它既可以代表葉子,又可以代表容器,而客戶端針對該抽象構件類進行程式設計,無須知道它到底表示的是葉子還是容器,可以對其進行統一處理。同...