設計模式之組合模式

2021-10-07 11:37:19 字數 1875 閱讀 4919

組合模式是一種樹狀結構的專用模式,主要用來組合物件。它可以比較清晰的顯示出部分和整體層次,因為這種模式的妙用在於整合而不是建立,因此我們常把他看做結構型模式的一種。

場景描述

某公司ceo下設有銷售經理和市場經理,兩個經理下各自有自己的下屬員工,現遍歷公司人員結構樹,列印所有人員的薪資職位等狀況。

**實現

下面是改寫自菜鳥教程的一段示例**:

class

employee

add(e: employee)

:void

remove

(e: employee)

:void

getsubordinates()

: array

tostring()

: string

}let

ceo:employee =

newemployee

("john"

,"ceo"

,30000);

let headsales:employee =

newemployee

("robert"

,"head sales"

,20000);

let headmarketing:employee =

newemployee

("michel"

,"head marketing"

,20000);

let clerk1:employee =

newemployee

("laura"

,"marketing"

,10000);

let clerk2:employee =

newemployee

("bob"

,"marketing"

,10000);

let sale***ecutive1:employee =

newemployee

("richard"

,"sales"

,10000);

let sale***ecutive2:employee =

newemployee

("rob"

,"sales"

,10000);

ceo.

add(headsales)

;ceo

.add

(headmarketing)

;headsales.

add(sale***ecutive1)

;headsales.

add(sale***ecutive2)

;headmarketing.

add(clerk1)

;headmarketing.

add(clerk2)

;//列印該組織的所有員工

console.

log(

ceo.

tostring()

);for(

let heademployee of

ceo.

getsubordinates()

)}

程式執行結果:

組合模式可以將分散的資料和物件整合成整體,方便呼叫和擴充套件。組合後的物件被公共使用,因此需要按單例原則設計,保證例項唯一。開發過程中為保證安全,還需要盡量對樹上不同節點的讀寫許可權做一定的控制。

設計模式之組合模式

組合模式 以 整體 部分 的層次結構,將物件以樹型結構組合起來。如下圖所示 組合模式首先得定義乙個用來管理和訪問部件們的抽象類。public abstract class equipment 再建立乙個組合體的部件 class element equipment 現在我們再來定義乙個組合體,也就是組...

設計模式之 組合模式

有時候我們需要維護一些物件,這些物件具有一定的層次結構,它們之間雖然差異很大,但在使用的時候我們希望能構一致的對待,比如windows控制項,繪圖中的圖形等,這個時候我們就可以採用組合模式來進行管理。組合模式就是將要管理的物件按樹型結構來進行組織,表示成一種 整體 部分 的層次結構,使得使用者對單個...

設計模式之組合模式

組合模式 將物件組合成樹形結構以表示 部分 整體 的層次結構。使得使用者對單個物件和組合物件的使用具有一致性。適用性 想表示物件的部分 整體層次結構,希望使用者忽略組合物件與單個物件的不同,使用者將統一地使用組合結構中的所有物件。典型表示結構圖 宣告組合中的物件宣告介面 在適當的情況下,實現所有類共...