設計模式 組合模式

2021-10-10 14:08:03 字數 2697 閱讀 4071

案例

編寫程式展示乙個學校院系結構,需求是這樣,要在乙個頁面中展示出學校的院系組成,乙個學校有多少個學院,乙個學院有多少個系

傳統解決方案

採用繼承的方式

傳統解決方案帶來的問題

這種方案實際上是站在組織大小上來進行分層次的,不能很好的實現管理操作,比如對學院,系的增加,刪除,遍歷等

使用組合模式解決問題

organizationcomponent:組織的統一介面,定義了add,remove,print三個介面方法,並預設實現了add,remove

department:系,是葉子節點(沒有聚合其他的組織),只需要實現print方法即可

college,university:非葉子節點(聚合了其他的組織),需要重寫add,remove以及實現print

/**

* * @classname compositepattern

* @description 組合模式

* @author fuling

* @date 2023年11月15日 下午5:02:29

*/public

class

compositepattern

}/**

* * @classname organizationcomponent

* @description 組織的統一介面

* @author fuling

* @date 2023年11月15日 下午5:45:45

*/inte***ce

organizationcomponent

//定義非葉子刪除組織的介面

default

void

remove

(organizationcomponent organizationcomponent)

//展示當前組織節點和其下的組織子節點

void

print()

;}/** *

* @classname department

* @description 系(葉子結點)

* @author fuling

* @date 2023年11月15日 下午5:48:36

*/class

department

implements

organizationcomponent

//實現列印方法,列印當前組織節點資訊

@override

public

void

print()

}/**

* * @classname college

* @description 院(非葉子結點),聚合了許多的系

* @author fuling

* @date 2023年11月15日 下午5:50:50

*/class

college

implements

organizationcomponent

//重寫新增子節點(系)的方法

public

void

add(

organizationcomponent organizationcomponent)

//重寫刪除子節點(系)的方法

public

void

remove

(organizationcomponent organizationcomponent)

//實現列印方法,列印當前組織節點資訊和其下組織子節點的資訊

@override

public

void

print()

}}/** *

* @classname university

* @description 學校(非葉子結點),聚合了院

* @author fuling

* @date 2023年11月15日 下午5:51:56

*/class

university

implements

organizationcomponent

//重寫新增子節點(院)的方法

public

void

add(

organizationcomponent organizationcomponent)

//重寫刪除子節點(院)的方法

public

void

remove

(organizationcomponent organizationcomponent)

//實現列印方法,列印當前組織節點資訊和其下組織子節點的資訊

@override

public

void

print()

}}

組合模式小結

component:定義了組合物件的介面方法

leaf:葉子節點

composite:組合物件,聚合了其他的葉子節點或組合物件

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

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

設計模式 組合模式 組合模式使用

目錄 組合模式概括 組合模式使用場景 定義 將物件組合成樹形結構以表示 部分 整體 的層次結構 作用 使客戶端對單個物件和組合物件保持一致的處理方式 使用場景 1.希望客戶端可以忽略組合物件與單個物件的差異時 2.處理乙個樹形結構時 優點 清楚的定義分層次的複雜物件,表示物件的全部或部分層次 讓客戶...

設計模式 組合設計模式

組合模式 composite pattern 又稱部分整體模式,用於把一組相似的物件當做乙個單一的物件,組合模式依據樹形來組合物件,用來表示部分以及整體層次,為結構型設計模式,它建立來物件組的樹形結構。意圖 將物件組合成樹形結構以表示 部分 整體 的結構層次,組合模式使得使用者對單個物件和組合物件的...