設計模式之組合模式

2021-08-29 01:38:04 字數 3324 閱讀 6666

分公司=乙個部分 把分公司看成乙個部門,而分公司又可以有其他分公司和部門 …,這裡介紹一種適合這種場景的設計模式那就是組合模式。

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

company:公司的抽象類(component)

concretecompany:具體公司類 相當於樹的分支(composite)

hrdepartment:hr部門 相當於樹的葉子沒有其他分支類(leaf)

financedepartment:財政部門 (leaf)

client:客戶端測試

company 抽象公司類

/**

* @author duanyimiao

* @create 2018-10-14 9:41 am

* @description 抽象公司類或介面

**/public

abstract

class

company

//新增公司(可能是子公司或辦事處、具體部門)

public

abstract

void

add(company company)

;public

abstract

void

remove

(company company)

;//depth表示當前公司或部門所在樹狀下的深度

public

abstract

void

display

(int depeth)

;//履行公司或部門職責

public

abstract

void

doduty()

;}

hrdepartment hr部門

/**

/** * @author duanyimiao

* @create 2018-10-14 9:50 am

* @description 人力資源部門

**/public

class

hrdepartment

extends

company

@override

public

void

add(company company)

@override

public

void

remove

(company company)

@override

public

void

display

(int depeth)

@override

public

void

doduty()

}

financedepartment 財政部門

/**

* @author duanyimiao

* @create 2018-10-14 9:50 am

* @description 財務部門

**/public

class

financedepartment

extends

company

@override

public

void

add(company company)

@override

public

void

remove

(company company)

@override

public

void

display

(int depeth)

@override

public

void

doduty()

}

concretecompany 具體公司(子公司或辦事處)

/**

* @author duanyimiao

* @create 2018-10-14 9:59 am

* @description 公司或子公司或辦事處

**/public

class

concretecompany

extends

company

@override

public

void

add(company company)

@override

public

void

remove

(company company)

@override

public

void

display

(int depeth)

}@override

public

void

doduty()

}}

client 測試類

/**

* @author duanyimiao

* @create 2018-10-14 10:07 am

* @description

**/public

class

client

}

輸出結果 1 前面數字代表樹的層數 相同表示在同一級

1 北京總部

2 北京總部人力資源

2 北京總部財務部

2 華東分公司

3 華東分公司人力資源

3 華東分公司財務部

3 南京辦事處

4 南京辦事處人力資源

4 南京辦事處財務部

3 杭州辦事處

4 杭州辦事處人力資源

4 杭州辦事處財務部

北京總部人力資源 員工招聘培訓管理

北京總部財務部 公司財務收支管理

華東分公司人力資源 員工招聘培訓管理

華東分公司財務部 公司財務收支管理

南京辦事處人力資源 員工招聘培訓管理

南京辦事處財務部 公司財務收支管理

杭州辦事處人力資源 員工招聘培訓管理

杭州辦事處財務部 公司財務收支管理

設計模式之組合模式

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

設計模式之 組合模式

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

設計模式之組合模式

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