1. 概述
將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。組合模式使得用戶對單個對象和組合對象的使用具有一致性兵多。這個結(jié)構(gòu)類似于遞歸的形式尖啡,但確定不是遞歸。當(dāng)添加一個組合的時候剩膘,它已經(jīng)把組合里面的東西包含了衅斩,在使用組合里面的東西的時候,我們只需要調(diào)用包含的組合即可怠褐。
2. 解決的問題
當(dāng)希望忽略單個對象和組合對象的區(qū)別畏梆,統(tǒng)一使用組合結(jié)構(gòu)中的所有對象(將這種“統(tǒng)一”性封裝起來)。
3. 組合模式中的角色
3.1 組合部件(Component):它是一個抽象角色奈懒,為要組合的對象提供統(tǒng)一的接口奠涌。(在oc中可以用協(xié)議實(shí)現(xiàn))
3.2 葉子(Leaf):在組合中表示子節(jié)點(diǎn)對象,葉子節(jié)點(diǎn)不能有子節(jié)點(diǎn)磷杏。
3.3 合成部件(Composite):定義有枝節(jié)點(diǎn)的行為溜畅,用來存儲部件,實(shí)現(xiàn)在Component接口中的有關(guān)操作极祸,如增加(Add)和刪除(Remove)慈格。(它里面可以包含葉子和合成部件)
4. 模式解讀
4.1 組合模式的類圖