您的位置:首页 > 编程语言 > Java开发

设计模式--组合模式

2016-04-08 00:00 218 查看
摘要: 简单记录组合模式的使用。

组合模式(composite):

组合模式有时又叫部分-整体模式,在处理类似树形结构的问题时比较方便。

组合模式的使用场景:

将多个对象组合在一起进行操作,常用于表示树形结构中。

示例:

组合模式测试类TreeTest.java

/**
* 组合模式测试类
*
* @author Kevin
* @date 2016-3-15
*/
public class TreeTest {

public static void main(String[] args) {
Tree tree = new Tree();

TreeNode rootNode = new TreeNode("根节点");

TreeNode nodeA = new TreeNode("子节点A");
TreeNode nodeB = new TreeNode("子节点B");
TreeNode nodeC = new TreeNode("子节点C");

nodeA.addChildren(nodeC);
rootNode.addChildren(nodeA);
rootNode.addChildren(nodeB);

tree.setRoot(rootNode);

System.out.println("build the tree finished!");
System.out.println("tree is : " + JSON.toJSONString(tree));

// tree的json形式的值为:
// {"root":{"children":[{"children":[{"children":[],"name":"子节点C"}],"name":"子节点A"},{"children":[],"name":"子节点B"}],"name":"根节点"}}
}

}

树的类Tree.java

/**
* 树
*
* @author Kevin
* @date 2016-3-15
*/
public class Tree {
private TreeNode root;

public Tree() {

}

public void setRoot(TreeNode root) {
this.root = root;
}

public TreeNode getRoot() {
return root;
}
}

树节点类TreeNode.java

/**
* 树节点
*
* @author Kevin
* @date 2016-3-15
*/
public class TreeNode {

/* 节点名称 */
private String name;

/* 父节点 */
private  TreeNode parent;

/* 子节点 */
private List<TreeNode> children = new ArrayList<TreeNode>();

public TreeNode(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public TreeNode getParent() {
return parent;
}

public void setParent(TreeNode parent) {
this.parent = parent;
}

/**
* 添加子节点
*
* @author Kevin
*/
public void addChildren(TreeNode treeNode) {
this.children.add(treeNode);
}

public List<TreeNode> getChildren() {
return children;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息