组合模式是面向可维护性编程的一种常见的设计模式。简单的说就是一个类里面有一组当前类组成的collection作为这个类的属性。这和递归有一定的相似。他的目的就是在同类型对象之间建立起树形层次结构,一个上层对象可以包含多个下层对象。例如一个菜单可以有很多的选项,同时这些选项中也可能包含下一层的菜单,这样菜单和菜单之间的这种关系就可理解为组合模式。其对应的UML图可以总结为:

由UML图可以看出,一个具体类实现了一个结构,同时,这个具体类中还包含一个field,这个filed由这同一个接口的实现类组成。这也就构成了我们前面说的同类型的对象,之间的树形层次结构,上层对象可以包含多个下层对象。

下面我们给出实际代码体会一下: