組合模式
出自 MBA智库百科(https://wiki.mbalib.com/)
組合模式(Composite Pattern)
目錄 |
組合模式是指將對象組合成樹形結構以表示“部分-整體”的層次結構,組合模式使得用戶對單個對象和組合對象的使用具有一致性。
組合模式的目的是:讓客戶端不再區分操作的是組合對象還是葉子對象,而是以一個統一的方式來操作。實現這個目標的關鍵之處,是設計一個抽象的組件類,讓它可以代表組合對象和葉子對象。這樣一來,客戶端就不用區分到底是組合對象還是葉子對象了,只需要全部當成組件對象進行統一的操作就可以了。
- 統一元素與部分整體,簡化處理代碼。
- 將元素內部結構同處理程式解耦,從而一致的對待元素與部分整體。
- 實際上,組合模式在應用中其實非常廣泛,像文件系統、企業結構等都可以看做是組合模式的典型應用。
- Component:定義成介面或者抽象類,是元素與不部分整體的父類。
- Leaf:葉子節點,定義了基本元素的特征,繼承自Component父類,是整體最基本的組成部分。
- Composite:部分整體或者容器,繼承或實現自Component父類。內部包含Composite或者Leaf的聚合,用來保存內部的組織結構,並且針對該聚合有相應的操作方法。
1. 在對象與部分整體之間,想要通過統一的方式對其進行處理,模糊處理其差異的時候可以選用組合模式。
2. 當客戶端忽視結構層次,無差異的看待元素與部分整體,不關心元素和部分整體之間的層次結構,想要實現對統一介面編程的時候。
3. 對象的變化是動態,而客戶端想要一致的處理對象的時候。
4.組合模式意圖是通過整體與局部之間的關係,通過樹形結構的形式進行組織複雜對象,屏蔽對象內部的細節,對外展現統一的方式來操作對象,是我們處理更複雜對象的一個手段和方式。公司OA系統如何進行設計有關於此。 綜上,在上述3種情況下可以考慮使用組合模式來設計系統程式。組合模式關鍵定義了一個抽象類或者介面,既可以代表元素又可以代表部分整體,而客戶端是針對該介面進行編程。