設計模式 組合模式

2021-10-07 20:42:19 字數 2067 閱讀 5640

組合(composite)模式是一種物件的行為模式。

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

組合模式的本質:統一葉子物件和組合物件。

組合模式的目的:讓客戶端不再區分操作的是組合物件還是葉子物件,而是以乙個統一的方式來操作。

組合模式結構圖

角色及其職責:

抽象元件(component)角色:為組合物件和葉子物件宣告公共的介面,讓客戶端可以通過這個介面來訪問和管理整個物件樹,並可以為這些定義的介面提供預設的實現。

組合物件(composite)角色:通常會儲存子元件(組合物件、葉子物件),定義包含子元件的那些元件的行為,並實現在抽象元件中定義的與子元件有關的操作,例如子元件的新增(addchild)和刪除(removechild)等。

葉子物件(leaf)角色:定義和實現葉子物件的行為,並且它不再包含其他的子節點物件。

客戶端(client)角色:通過component介面來統一操作組合物件和葉子物件,以建立出整個物件樹結構。

以服裝為例,樹形結構一次為**和**,並可以依次向下延伸。

1.定義抽象元件(component)角色

public

abstract

class

component

public

void

removechild

(component child)

public component getchildren

(int index)

}

2.定義組合物件(composite)角色

public

class

composite

extends

component

/** * 用來儲存組合物件中包含的子元件物件

*/private list

childcomponents = null;

@override

public

void

someoperation

(string prestr)}}

//向組合物件中新增元件物件

@override

public

void

addchild

(component child)

childcomponents.

add(child);}

//向組合物件中移除元件物件

@override

public

void

removechild

(component child)

}//獲取元件物件

@override

public component getchildren

(int index)

}return null;

}}

3.定義葉子物件(leaf)角色

public

class

leaf

extends

component

/** * 示意方法,此處用於輸出元件的樹形結構

*/@override

public

void

someoperation

(string prestr)

}

4.main方法驗證

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

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

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

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

設計模式 組合設計模式

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