深入理解23種設計模式 8 組合模式

2021-10-17 03:24:31 字數 3127 閱讀 8093

組合模式 (composite pattern),又叫部分整體模式,是用於把一組相似的物件當作乙個單位的物件。組合模式依據樹形結構來組合物件,用來表示部分以及整體層次。這種型別的設計模式屬於結構型模式,它建立來物件組的樹形結構。

需求:展示乙個學校有多少個學校院系組成,乙個學院有多少個學院,乙個學院有多個系。

資訊工程專業

建立 organizationcomponent 類 該類帶有 organizationcomponent 物件

@data

@tostring

public

abstract

class

organizationcomponent

/** * 刪除

* @param component

*/protected

void

remove

(organizationcomponent component)

protected

abstract

void

print()

;public

organizationcomponent

(string name, string des)

}

建立university 學校類

public

class

university

extends

organizationcomponent

@override

protected

void

add(organizationcomponent component)

@override

protected

void

remove

(organizationcomponent component)

@override

protected

void

print()

);}}

建立學院類

public

class

college

extends

organizationcomponent

@override

protected

void

add(organizationcomponent component)

@override

protected

void

remove

(organizationcomponent component)

@override

protected

void

print()

);}}

建立專業類

map 介面 :頂級介面

public

inte***ce

map

abstractmap 抽象類實現來map介面 :介面實現,擴充套件

public

abstract

class

abstractmap

implements

mappublic

void

putall

(map<

?extendsk,

?extends

v> m)

}

hashmap :方法實現

public

class

hashmap

extends

abstractmap

implements

map, cloneable, serializable

public

void

putall

(map<

?extendsk,

?extends

v> m)

}

hashmap中的內部類 node :他其實就是我們組合模式中所講述的leaf物件,它沒有再組合任何的子節點,提供的也只有get方法和set方法

static

class

node

implements

map.entry

public

final k getkey()

public

final v getvalue()

public

final string tostring()

public

final

inthashcode()

public

final v setvalue

(v newvalue)

public

final

boolean

equals

(object o)

return

false;}

}

github demo位址 : ~~~傳送門~~~

深入理解設計模式(21) 組合模式

定義 將物件以樹形結構組織起來,以達成 部分 整體 的層次結構,使得客戶端對單個物件和組合物件的使用具有一致性。動機 motivation 客戶 過多地依賴於物件容器複雜的內部實現結構,物件容器內部實現結構 而非抽象介面 的變化將引起客戶 的頻繁變化,帶來了 的維護性 擴充套件性等弊端。如何將 客戶...

23種設計模式 10 組合模式

一 常規實現 不安全 產品類 public abstract class product public string name 每個產品都可以工作 public abstract void work 每個產品都可以往裡面再新增子產品 至於有些產品不能再新增子產品,這裡我們一會會詳細說,大家先記住這一...

深入理解23種設計模式 23 責任鏈模式

責任鏈模式 chain of responsibility pattern 為請求者建立乙個接受者物件的鏈,這種模式對請求對傳送者和請求者進行解耦。責任鏈模式通常每個接收者都包含對另乙個接收者都引用,如果乙個物件不能處理該請求,那麼他就會把相同的請求傳給下乙個接收者解耦,以此類推。這種型別的設計模式...