允許你將物件組合成樹形結構來表現「整體/部分」層次結構,組合能讓客戶以一致的方式處理個別物件以及物件組合。
定義中描述的組合能讓客戶一致的方式來處理個別物件及物件組合,其中我們使用抽象元件來做到一致的方式,使用葉子節點來處理個別物件,使用容器節點來處理物件組合。
抽象容器
/**
* 抽象構件
*/public
inte***ce
component
葉子構件
/**
* 葉子構件
* 不支援add、remove、getchild等方法,此處直接丟擲異常
*/public
class
leaf
implements
component
@override
public
void
add(component component)
@override
public
void
remove(component component)
@override
public
void
operate()
@override
public listgetchild()
}
容器構件
/**
* 容器構件
* 此處operate方法使用遞迴呼叫所有子節點的operate方法
*/public
class
composite
implements
component
@override
public
void
remove(component component)
@override
public
void
operate()
private
void
operate(listchilds) catch (exception e) }}
@override
public listgetchild()
}
測試入口
public
class
initmain
}
輸出如下:
this is leaf operate : leafa1組合模式通過提供抽象構件通過樹形結構達到讓個別物件和容器物件能夠使用一致的方式來解決問題。如果你想處理樹形結構的物件集合或者想要忽略不通物件見的差異,就可以使用組合模式。this is leaf operate : leafb
this is leaf operate : leafc1
this is leaf operate : leafc2
此模式中我們模糊了簡單元素和複雜元素的概念,客戶程式可以像處理簡單元素一樣來處理複雜元素,從而使得客戶程式與複雜元素的內部結構解耦。
組合模式 設計模式 組合模式
1.需求分析 假設要給乙個大公司做辦公管理系統,公司有人力資源部 財務部等,然後公司在其他城市還有分公司,分公司也有自己的人力資源部 財務部等,要求總公司 分公司以及各部分成樹狀結構管理。要完成這麼乙個系統,為了有乙個更好的設計,方便開發的展開,就需要了解乙個設計模式 組合模式。2.定義 將物件組合...
設計模式 組合模式 組合模式使用
目錄 組合模式概括 組合模式使用場景 定義 將物件組合成樹形結構以表示 部分 整體 的層次結構 作用 使客戶端對單個物件和組合物件保持一致的處理方式 使用場景 1.希望客戶端可以忽略組合物件與單個物件的差異時 2.處理乙個樹形結構時 優點 清楚的定義分層次的複雜物件,表示物件的全部或部分層次 讓客戶...
設計模式 組合設計模式
組合模式 composite pattern 又稱部分整體模式,用於把一組相似的物件當做乙個單一的物件,組合模式依據樹形來組合物件,用來表示部分以及整體層次,為結構型設計模式,它建立來物件組的樹形結構。意圖 將物件組合成樹形結構以表示 部分 整體 的結構層次,組合模式使得使用者對單個物件和組合物件的...