[大話設計模式] 重點筆記:組合模式 (Composite)

  • 3009
  • 0
  • 2011-07-25

[大話設計模式] 重點筆記:組合模式(Composite)

[Ch.19]

原文定義:
Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.

UML圖:
p.278或參考這裡

適用時機:
當需求中有「部分」與「整體」的層次結構,且希望可以被一致對待時

模式特色:
將Client與複雜的容器結構解耦,使Client可以用一致的方式處理物件(Leaf)及物件容器(Non-leaf)

注意事項:
組合模式還可再細分為透明方式與安全方式。
透明方式把用來管理子物件的方法(如:Add、Remove)宣告在Component中,好處是可以讓Leaf node和Non-Leaf node對於外界而言沒有區別,但缺點是這些方法對於Leaf node是無意義的。
安全方式不在Component中宣告管理子物件的方法,可避免透明方式的問題,但使得Leaf node和Non-Leaf node不具相同介面,導致用戶端需再另行判斷。

例子:
System.Web.UI.Control及其衍生類別

參考資料:
http://www.dofactory.com/Patterns/PatternComposite.aspx
http://terrylee.cnblogs.com/archive/2006/03/11/347919.html
http://www.cnblogs.com/kid-li/archive/2006/06/02/416038.html