1. 程式人生 > >2018.4.20 設計模式之組合模式

2018.4.20 設計模式之組合模式

部分 葉子節點 方法 簡化 客戶端 抽象類 子節點 4.2 概念

什麽是組合模式?

    組合模式是指將對象組合成樹形結構以表示“部分-整體”的層次結構,組合模式使得用戶對單個對象和組合對象的使用具有一致性。
   有時候又叫做部分-整體模式,是用於把一組相似的對象當作一個單一的對象。它使我們樹型結構的問題中,模糊了簡單元素和復雜元素的概念,客戶程序可以像處理簡單元素一樣來處理復雜元素,從而使得客戶程序與復雜元素的內部結構解耦。

組合模式的作用

  組合模式的目的是:讓客戶端不再區分操作的是組合對象還是葉子對象,而是以一個統一的方式來操作。實現這個目標的關鍵之處,是設計一個抽象的組件類,讓它可以代表組合對象和葉子對象。這樣一來,客戶端就不用區分到底是組合對象還是葉子對象了,只需要全部當成組件對象進行統一的操作就可以了。

統一元素與部分整體,簡化處理代碼。
將元素內部結構同處理程序解耦,從而一致的對待元素與部分整體。
實際上,組合模式在應用中其實非常廣泛,像文件系統、企業結構等都可以看做是組合模式的典型應用。
Component:定義成接口或者抽象類,是元素與不部分整體的父類。
Leaf:葉子節點,定義了基本元素的特征,繼承自Component父類,是整體最基本的組成部分。
Composite:部分整體或者容器,繼承或實現自Component父類。內部包含Composite或者Leaf的聚合,用來保存內部的組織結構,並且針對該聚合有相應的操作方法。

組合模式角色

組合部件(Component):它是一個抽象角色,為要組合的對象提供統一的接口。
葉子(Leaf):在組合中表示子節點對象,葉子節點不能有子節點。
合成部件(Composite):定義有枝節點的行為,用來存儲部件,實現在Component接口中的有關操作,如增加(Add)和刪除(Remove)。

2018.4.20 設計模式之組合模式