组合模式有时又叫做部分整体模式,在处理类树形结构的问题时比较方便。这个模式还是很好理解的,如下我们举个例子就可以搞定啦。
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个孩子节点的名字是:飘呀飘博客
结论
使用场景:部分、整体场景,如树形菜单,文件、文件夹的管理。