组合模式,将对象组合树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一直性。
当需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一的使用组合结构中的所有对象时,应该考虑使用组合模式。
组合模式定义了包含基本对象和组合对象的类层次结构。基本对象可以被组合成更复杂的组合对象,而这个组合对象又可以被组合,这样不断递归下去,客户代码中任何用到基本对象的地方都可以用到组合对象。
用户不用关心到底是处理一个叶节点还是一个组合组件,也就用不着为定义组合而写一些选择判断语句了。
Component 为组合中的对象声明接口,在适当情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component的子部件。
Leaf在组合中表示叶节点对象,叶节点没有子节点。
Composite 定义有枝节点行为,用来存储子部件,在COmponent接口中实现与子部件有关的操作。