类图
/**
 * 树	整体
 * 
 * @author stone
 * 
 */
public class tree {
	private treenode root; //根节点
	public tree(string name) {
		this.root = new treenode(name);
	}
	
	public treenode getroot() {
		return root;
	}
}
/**
 * 树节点 部份
 * 也可以自身代表树:一堆节点组成了一颗树
 * 
 * @author stone
 * 
 */
public class treenode {
	private string name;
	private treenode parent;
	private list<treenode> children;
	
	public treenode(string name) {
		this.name = name;
		this.children = new arraylist<treenode>();
	}
	public void setname(string name) {
		this.name = name;
	}
	public string getname() {
		return name;
	}
	public void setparent(treenode parent) {
		this.parent = parent;
	}
	public treenode getparent() {
		return parent;
	}
	
	public list<treenode> getchildren() {
		return children;
	}
	
	public void add(treenode node) {
		this.children.add(node);
	}
	
	public void remove(treenode node) {
		this.children.remove(node);
	}
}
/*
 * 组合(composite)模式  又叫做部分-整体模式
 * 它使我们层级、树形结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦
 * 以下情况下适用composite模式:
		1.你想表示对象的部分-整体层次结构
		2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
 */
public class test {
	public static void main(string[] args) {
//		tree treea = new tree("a");
//		treea.getroot().add(new treenode("b"));
//		treea.getroot().add(new treenode("c"));
//		treenode treenoded = new treenode("d");
//		treenoded.add(new treenode("d1"));
//		treenoded.add(new treenode("d2"));
//		treea.getroot().add(treenoded);
//		print(treea.getroot());
		/*
		 * 上面使用了tree对象,
		 * 下面只使用treenode对象,符合组合模式的定义,既代表部分也代表整体
		 */
		treenode treea = new treenode("a");
		treea.add(new treenode("b"));
		treea.add(new treenode("c"));
		treenode treenoded = new treenode("d");
		treenoded.add(new treenode("d1"));
		treenoded.add(new treenode("d2"));
		treea.add(treenoded);
		print(treea);
		/*
		 * 其他示例:文件系统{目录、文件}, 类似这种可用递归遍历的结构,
		 * 用一个对象就能表示部分与整体,都可以用组合模式
		 */
	}
	
	public static void print(treenode root) {
		if (root == null) return;
		linkedlist<treenode> linkedlist = new linkedlist<treenode>();  
		linkedlist.add(root);
		while (!linkedlist.isempty()) {
			treenode node = linkedlist.removefirst();
			system.out.println(node.getname());
			list<treenode> children = node.getchildren();
			for (int i = 0; i < children.size(); i++) {
				treenode next = children.get(i);
				list<treenode> children2 = next.getchildren();
				if (!children2.isempty()) {
					linkedlist.add(next);
				} else {
					system.out.println(next.getname());
				}
			}
		}
	}
}
打印
a
b
c
d
d1
d2
以上就是java 实现组合(composite)模式的详细介绍的详细内容。
   
 
   