定义:
组合(Composite)模式是一种对象的行为模式。将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
理解:
组合模式,关注的是部分与整体的关系,关心的是一类对象的共同方法或属性,目标是使代码符合OC原则,易拓展,易维护。方法是通过对 对象进行统一的抽象,从而使高层代码可以忽略结构,专注业务。通常的表现形式为树形结构。
以动物园为例(本系列跟动物园杠上了),为了方便进行不同单位、不同分类或者不同部分动物的体重(业务目标),从而采用抽象方法,把动物、部门进行抽象。如下图:
把上图中所有节点,统一抽象为:单位,单位分两种:节点单位和叶子单位。节点单位本身没有体重属性,他的属性是下属所有动物体重之和。可以看到,不同部门之间的层级是有区别的,有的三层,有的四层。
而组合模式,带来了一个好处,就是当我想要统计某单位体重的时候,调用统一方法:getWeight即可。
具体实现,则是利用递归,遍历根单位下属子单位即可。