**组合模式:**也叫部分整体模式,他创建了对象组的树形结构,将对象组合成树状结构以表示整体和部分的层次关系
组合模式依据树型结构来组合对象,用来表示部分和整体的层次,这样的设计模式属于结构型设计模式,组合模式使得我们用户单个对象和组合对象具有访问一致性,可以让客户以一致的方式处理个别对象以及组合对象.
这是组合模式的类图
Component是组合中对象声明的接口,在适当情况下,实现所有类共有的接口默认行为,用于访问和管理component子部件,component可以是抽象类或者接口
leaf在接口中表示叶子节点,叶子节点没有子节点
composite非叶子节点,用于存储子部件,在component中实现子部件的相关操作,比如add,remove
这是我们的component类
其composite类重写了父类的add和remove方法
leaf类其没有add和remove
这样子设计,方便了我们对其进行遍历以及管理,如果这个时候我们在其之间需要再加一个类,我们只需要继承我们的component抽象类,符合我们对扩展开放,对修改关闭,方便我们对于节点的插入删除,这个设计模式必须要求叶子和节点差异不能太大,这里也可以简化我们的操作,我们只需要对一致的对象进行操作,不需要考虑整体和部分的关系.