编程语言 php java

java设计模式-组合模式Composite

java HTML我帮您 1年前  0次浏览
组合模式(Composite Pattern)用于将多个对象用相似的方式整合成单个对象。组合模式用树的形式组合对象,这些树表示部分或者整个层的对象。这种类型的设计模式创建了树型结构的一组对象,属于结构型模式。
组合模式创建一个容器类包含一组对象。该类提供方法修改这一组相同的的对象。
package com.html580.composite;

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

class TreeNode {
private String name;
private TreeNode parent;
private List children = new ArrayList();

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;
}

/**
* 添加子节点
*
* @param node
*/
public void addChildren(TreeNode node) {
children.add(node);
node.setParent(this);
}

/**
* 删除子节点
*
* @param node
*/
public void removeChildren(TreeNode node) {
children.remove(node);
}

/**
* 获得子节点
*
* @return
*/
public List getChildren() {
return children;
}

@Override
public String toString() {
return "TreeNode + ", name=" + name + ", children" + children.toString() + ">";
}

}

public class Client {
public static void main(String<> args) {
TreeNode root = new TreeNode("ROOT");
TreeNode node11 = new TreeNode("NODE11");
TreeNode node12 = new TreeNode("NODE12");
TreeNode node1121 = new TreeNode("NODE1121");
TreeNode node1122 = new TreeNode("NODE1122");
TreeNode node1221 = new TreeNode("NODE1221");
TreeNode node1222 = new TreeNode("NODE1222");
root.addChildren(node11);
root.addChildren(node12);
node11.addChildren(node1121);
node11.addChildren(node1122);
node12.addChildren(node1221);
node12.addChildren(node1222);
System.out.println(root.toString());
}
}
结果(缩进部分是手动添加的,这样显示更直观)
   TreeNode 
        TreeNode 
            TreeNode >,   
TreeNode >
>>,
TreeNode TreeNode >,
TreeNode >
>>
>>
使用场景:将多个对象组合在一起进行操作,常用于表示树形结构中,例如二叉树,数等。


发表评论