基本介绍:
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。
这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。
示例代码:
package org.brando;
/**
*
* 类说明: 测试类
* @author Brando 2018年3月29日 下午2:03:59
*/
public class Launcher {
public static void main(String[] args) {
TreeNode root = createData();
printTreeNode(root);
}
/**
*
* 方法说明: 打印树节点.
* @author Brando 2018年5月3日 下午2:37:54
* @param parentNode 父级节点.
*/
public static void printTreeNode(TreeNode parentNode) {
System.out.println(parentNode.nodeName);
for(int i = 0; i < parentNode.childs.size(); i++) {
TreeNode cur = parentNode.childs.get(i);
printTreeNode(cur);
}
}
/**
*
* 方法说明: 创建数据.
* @author Brando 2018年5月3日 下午2:30:49
* @return
*/
public static TreeNode createData() {
TreeNode node1 = new TreeNode("1");
TreeNode node11 = new TreeNode("1-1");
TreeNode node111 = new TreeNode("1-1-1");
TreeNode node112 = new TreeNode("1-1-2");
TreeNode node113 = new TreeNode("1-1-3");
TreeNode node12 = new TreeNode("1-2");
TreeNode node121 = new TreeNode("1-2-1");
TreeNode node122 = new TreeNode("1-2-2");
TreeNode node123 = new TreeNode("1-2-3");
TreeNode node13 = new TreeNode("1-3");
TreeNode node131 = new TreeNode("1-3-1");
TreeNode node132 = new TreeNode("1-3-2");
TreeNode node133 = new TreeNode("1-3-3");
node1.childs.add(node11);
node1.childs.add(node12);
node1.childs.add(node13);
node11.childs.add(node111);
node11.childs.add(node112);
node11.childs.add(node113);
node12.childs.add(node121);
node12.childs.add(node122);
node12.childs.add(node123);
node13.childs.add(node131);
node13.childs.add(node132);
node13.childs.add(node133);
return node1;
}
}
package org.brando;
import java.util.ArrayList;
import java.util.List;
/**
*
* 类说明: 树节点类.
* @author Brando 2018年5月3日 下午2:25:51
*/
public class TreeNode {
public TreeNode(String nodeName) {
this.nodeName = nodeName;
}
/**节点名称**/
public String nodeName;
/**子级节点集合**/
public List<TreeNode> childs = new ArrayList<TreeNode>();
}