组合模式(CompsitePattern)

基本介绍:

    组合模式(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>();
	
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值