说明:(定义)将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。(关键点提现层次结构但他们有一致性操作,它有透明方式和安全方式,区别在于透明方式新增/删除子节点的方法有没有,有就是透明方式,没有则为安全方式,通常用透明方式。)
需求:现在对文件夹枝节点杀毒,文件夹枝节点里面有文件叶子.txt,文件夹2,文件夹2里面有文件叶子.png。
解决方式:
a. 定义一个组合抽象类,定义新增/删除子节点方法,定义一个杀毒的方法(可以是其他一致的操作);(文件/文件夹抽象)
b. 定义一个叶子类(继承组合抽象类),空实现新增/删除子节点方法,重写叶子的显示方法;(叶子.txt、叶子.png,没有更下级的文件了)
c. 定义一个枝节点类(继承组合抽象类),声明一个子节点集合,重写新增/删除子节点方法,方法内将传入的节点放入子节点集合,重写显示方法,方法内for循环子节点集合且将传入的层数+1继续调用子节点的显示方法;(文件夹2)
d. 客户端根据需求实例化枝节点还是叶子,同时设置他们的层级关系,最后调用杀毒方法对该文件夹进行杀毒。
需求变更:新增一个文件夹杀毒
解决方式:
客户端新增一个实例化叶子对象,设置它与树之间的关系。
类图: