组合模式:
组合模式又叫做部分-整体模式,通常用于操作树形结构问题
组合模式设计思路:
第一步:定义类TreeNode,提供添加节点、删除节点、获取节点的方法
第二步:定义类Tree,在构造中持有TreeNode的实例
具体编码实现:
第一步:定义类TreeNode,提供添加节点、删除节点、获取节点的方法
public class TreeNode {
/**
* 节点名
*/
private String nodeName;
/**
* 父节点
*/
private TreeNode parent;
/**
* 子节点
*/
private Vector<TreeNode> children = new Vector<TreeNode>();
public TreeNode(String nodeName) {
this.nodeName = nodeName;
}
public String getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
public TreeNode getParent() {
return parent;
}
public void setParent(TreeNode parent) {
this.parent = parent;
}
/**
* 添加节点
*
* @param treeNode
* 节点对象
*/
public void addNode(TreeNode treeNode) {
children.add(treeNode);
}
/**
* 删除节点
*
* @param treeNode
* 节点对象
*/
public void removeNode(TreeNode treeNode) {
children.remove(treeNode);
}
/**
* 获取节点
*
* @return 节点枚举集合
*/
public Enumeration<TreeNode> getChildren() {
return children.elements();
}
}
第二步:定义类Tree,在构造中持有TreeNode的实例
public class Tree {
TreeNode treeNode = null;
public Tree(String nodeName) {
treeNode = new TreeNode(nodeName);
}
}
测试类:
public class Test {
public static void main(String[] args) {
Tree company = new Tree("微传媒网络科技有限责任公司");
TreeNode app = new TreeNode("移动应用中心");
TreeNode pro = new TreeNode("产品研发中心");
app.addNode(pro);
company.treeNode.addNode(app);
}
}