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