1. 概述
将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。这个结构类似于递归的形式,但确定不是递归。当添加一个组合的时候,它已经把组合里面的东西包含了,在使用组合里面的东西的时候,我们只需要调用包含的组合即可。
2. 解决的问题
当希望忽略单个对象和组合对象的区别,统一使用组合结构中的所有对象(将这种“统一”性封装起来)。
3. 组合模式中的角色
3.1 组合部件(Component):它是一个抽象角色,为要组合的对象提供统一的接口。(在oc中可以用协议实现)
3.2 叶子(Leaf):在组合中表示子节点对象,叶子节点不能有子节点。
3.3 合成部件(Composite):定义有枝节点的行为,用来存储部件,实现在Component接口中的有关操作,如增加(Add)和删除(Remove)。(它里面可以包含叶子和合成部件)
4. 模式解读
4.1 组合模式的类图