组合模式
场景引入:树形结构在软件中随处可见,例如操作系统中的目录结构、应用软件中的菜单、办公系统中的公司组织结构等等,如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题,组合模式通过一种巧妙的设计方案使得用户可以一致性地处理整个树形结构或者树形结构的一部分,它描述了如何将容器对象和叶子对象进行递归组合,使得用户在使用时无须对其进行区分,可以一致地对待容器对象和叶子对象,这就是组成模式的模式动机 定义:组合多个对象形成树形结构以表示具有部分-整体关系的层次结构。组合模型让客户端可以统一对待单个对象和组合对象 由上图可知,组合模式包含以下3个角色 (1)Component(抽象构件):它可以是接口或抽象类,为叶子构件和容器构件对象声明接口,在该角色中可以包含所有子类共有行为的声明和实现。 (2)Leaf(叶子构件):它在组合结构中表示叶子节点对象,它实现了在抽象构件中定义的行为 (3)Composite(容器构件):它在组合结构中表示容器节点对象,容器节点包含子节点,其子节点可以是容器或叶子节点 组合模式应用实例 1. 实例说明 某软件公司欲开发一个杀毒(AntiVirus)软件,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒。该杀毒软件还可以根据各类文件的特点,为不同类型的文件提供不同的杀毒方式,例如图像文件(ImageFile