設計模式 組合模式

2021-09-25 05:51:30 字數 3198 閱讀 9538

一. 概述

組合模式(composite pattern),又叫部分整體模式,它建立了物件組的樹形結構,將物件組合成樹狀結構以表示「整體-部分」的層次關係。

組合模式依據樹形結構來組合物件,用來表示部分以及整體層次。

這種型別的設計模式屬於結構型模式。

組合模式使得使用者對單個物件和組合物件的訪問具有一致性,即:組合能讓客戶以一致的方式處理個別物件以及組合物件。

組合模式解決這樣的問題,當我們的要處理的物件可以生成一顆樹形結構,而我們要對樹上的節點和葉子進行操作時,它能夠提供一致的方式,而不用考慮它是節點還是葉子。

對應的示意圖

二. 場景示例

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

public

abstract

class

organizationcomponent

protected

void

remove

(organizationcomponent organizationcomponent)

//構造器

public

organizationcomponent

(string name, string des)

public string getname()

public

void

setname

(string name)

public string getdes()

public

void

setdes

(string des)

//方法print, 做成抽象的, 子類都需要實現

protected

abstract

void

print()

;}public

class

department

extends

organizationcomponent

//add , remove 就不用寫了,因為他是葉子節點

@override

public string getname()

@override

public string getdes()

@override

protected

void

print()

}public

class

college

extends

organizationcomponent

// 重寫add

@override

protected

void

add(organizationcomponent organizationcomponent)

// 重寫remove

@override

protected

void

remove

(organizationcomponent organizationcomponent)

@override

public string getname()

@override

public string getdes()

// print方法,就是輸出university 包含的學院

@override

protected

void

print()

}}//university 就是 composite , 可以管理college

public

class

university

extends

organizationcomponent

// 重寫add

@override

protected

void

add(organizationcomponent organizationcomponent)

// 重寫remove

@override

protected

void

remove

(organizationcomponent organizationcomponent)

@override

public string getname()

@override

public string getdes()

// print方法,就是輸出university 包含的學院

@override

protected

void

print()

}}

public

class

client

}

三. 組合模式在jdk中的應用

四. 組合模式的注意事項和細節簡化客戶端操作。客戶端只需要面對一致的物件而不用考慮整體部分或者節點葉子的問題。

具有較強的擴充套件性。當我們要更改組合物件時,我們只需要調整內部的層次關係,客戶端不用做出任何改動。

方便建立出複雜的層次結構。客戶端不用理會組合裡面的組成細節,容易新增節點或者葉子從而建立出複雜的樹形結構。

需要遍歷組織機構,或者處理的物件具有樹形結構時, 非常適合使用組合模式。

要求較高的抽象性,如果節點和葉子有很多差異性的話,比如很多方法和屬性都不一樣,不適合使用組合模式。

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

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

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

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

設計模式 組合設計模式

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