组合模式有时又叫做部分整体模式,在处理类树形结构的问题时比较方便。这个模式还是很好理解的,如下我们举个例子就可以搞定啦。
1、UML

类图很容易明白就是自己关联自己。
2、TreeNode
/*** 组合模式* @author suibibk.com*/public class TreeNode {private String name;private List<TreeNode> childrens = new ArrayList<TreeNode>();public String getName() {return name;}public void setName(String name) {this.name = name;}public void add(TreeNode treeNode) {childrens.add(treeNode);}public void remove(TreeNode treeNode) {childrens.remove(treeNode);}public void display(){System.out.println("节点名字:"+name);if(childrens.size()>0) {for (int i = 0; i < childrens.size(); i++) {System.out.println("第"+(i+1)+"个孩子节点的名字是:"+childrens.get(i).name);}}}}
3、测试类Test
public class Test {public static void main(String[] args) {TreeNode treeNode = new TreeNode();treeNode.setName("随笔博客");TreeNode treeNode2 = new TreeNode();treeNode2.setName("IT博客");TreeNode treeNode3 = new TreeNode();treeNode3.setName("一叶知秋博客");TreeNode treeNode4 = new TreeNode();treeNode4.setName("飘呀飘博客");treeNode.add(treeNode2);treeNode.add(treeNode3);treeNode.add(treeNode4);treeNode.display();}}
运行测试类,将会输出如下内容:
节点名字:随笔博客
第1个孩子节点的名字是:IT博客
第2个孩子节点的名字是:一叶知秋博客
第3个孩子节点的名字是:飘呀飘博客
结论
使用场景:部分、整体场景,如树形菜单,文件、文件夹的管理。
