(十六)設計模式 組合模式

2021-10-03 02:11:51 字數 2845 閱讀 6000

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

北京總公司總部下屬三個機構:人力資源部、上海華東分公司、財務部門;上海華東分公司下也有幾個機構:南京辦事處、人力資源部、財務部、杭州辦事處;南京辦事處也有兩個下屬機構:人力資源部、財務部;杭州辦事處也有兩個下屬機構:人力資源部、財務部。會有一組同類的機構。

公司:組合中的物件宣告介面,在適當的情況下,實現所有類共有介面的預設行為。宣告乙個介面用於訪問和管理(component)的子部件;

財務部:在組合中表示葉節點物件,葉節點沒有子節點;

人力資源部:在組合中表示葉節點物件,葉節點沒有子節點;

具體公司:定義有枝節點行為,用來儲存子部件,在comonet介面中實現與子部件有關的操作,比如增加add和刪除remove。

(1)、company(公司類 抽象類或介面)

public

abstract

class

company

public

abstract

void

add(company c)

;//增加

public

abstract

void

remove

(company c)

;//移除

public

abstract

void

display

(int depth)

;//顯示

public

abstract

void

lineofduty()

;//履職,不同的部門需履行不同的職責

}

(2)、concretecompany (具體公司類 實現介面 樹枝節點)
public

class

concretecompany

extends

company

@override

public

void

add(company c)

@override

public

void

remove

(company c)

@override

public

void

display

(int depth)

system.out.

println

(s + name)

;for

(company component : children)

}@override

public

void

lineofduty()

}}

(3)、hrdepartment (人力資源部類 樹葉節點)
public

class

hrdepartment

extends

company

@override

public

void

add(company c)

@override

public

void

remove

(company c)

@override

public

void

display

(int depth)

system.out.

println

(s + name);}

@override

public

void

lineofduty()

}

(4)、financedepartment (財務部類 樹葉節點)
public

class

financedepartment

extends

company

@override

public

void

add(company c)

@override

public

void

remove

(company c)

@override

public

void

display

(int depth)

system.out.

println

(s + name);}

@override

public

void

lineofduty()

}

public

static

void

main

(string[

] args)

輸出:

組合模式這樣就定義了包含人力資源部和財務部這些基本物件和分公司、辦事處等組合物件的類層次結構。基本物件可以被組合成更複雜的組合物件,而這個組合物件又可以被組合,這樣不斷地遞迴下去,客戶**中,任何用到基本物件的地方都可以使用組合物件了。

使用者時不用關心到底是處理乙個葉節點還是處理乙個組合元件,也就用不著為定義組合而寫一些選擇判斷語句了 。

組合模式是讓客戶可以一致的使用組合結構和單個物件。

參考:《大話設計模式》

大話設計模式筆記(十六) 組合模式

將物件組合成樹形結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。組合物件 created by callmedevil on 2019 8 11.public abstract class component 通常都用add 和remove 方法來提供增加...

組合模式 設計模式 組合模式

1.需求分析 假設要給乙個大公司做辦公管理系統,公司有人力資源部 財務部等,然後公司在其他城市還有分公司,分公司也有自己的人力資源部 財務部等,要求總公司 分公司以及各部分成樹狀結構管理。要完成這麼乙個系統,為了有乙個更好的設計,方便開發的展開,就需要了解乙個設計模式 組合模式。2.定義 將物件組合...

大話設計模式讀書筆記(十六) 組合模式

組合模式 composite 將物件組合成樹形結構以表示 部分 整體 的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。compoent為組合中的物件宣告乙個介面 在適當情況下,實現所有類共有介面的預設行為。宣告乙個介面用於訪問和管理compoent的子部件 public abst...