分公司=乙個部分 把分公司看成乙個部門,而分公司又可以有其他分公司和部門 …,這裡介紹一種適合這種場景的設計模式那就是組合模式。
組合模式:將物件組合成樹形結構以表示 部分-整體的層次結構。組合模式使使用者對單個物件和組合物件的使用具有一致性。
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控制項,繪圖中的圖形等,這個時候我們就可以採用組合模式來進行管理。組合模式就是將要管理的物件按樹型結構來進行組織,表示成一種 整體 部分 的層次結構,使得使用者對單個...
設計模式之組合模式
組合模式 將物件組合成樹形結構以表示 部分 整體 的層次結構。使得使用者對單個物件和組合物件的使用具有一致性。適用性 想表示物件的部分 整體層次結構,希望使用者忽略組合物件與單個物件的不同,使用者將統一地使用組合結構中的所有物件。典型表示結構圖 宣告組合中的物件宣告介面 在適當的情況下,實現所有類共...