简介
它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。
树以及菜单结构都是组合模式最好的展示,不管那一层的构建都可以抽象在一起
例子
public class TreeNode {
//节点名称
private String name;
//子节点
private List<TreeNode> children;
//构造方法
public TreeNode(String name) {
this.name = name;
this.children = new ArrayList<>();
}
public void add (TreeNode node) {
this.children.add(node);
}
public void remove(TreeNode node) {
this.children.remove(node);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<TreeNode> getChildren() {
return children;
}
public void setChildren(List<TreeNode> children) {
this.children = children;
}
@Override
public String toString() {
return "TreeNode{" +
"name='" + name + '\'' +
", children=" + children +
'}';
}
}
- 测试
public class Main {
public static void main(String[] args) {
TreeNode a = new TreeNode("A");
TreeNode b = new TreeNode("B");
TreeNode c = new TreeNode("C");
TreeNode d = new TreeNode("D");
TreeNode e = new TreeNode("E");
a.add(b);
a.add(c);
c.add(d);
c.add(e);
System.out.println(a);
//TreeNode{name='A', children=[TreeNode{name='B', children=[]}, TreeNode{name='C', children=[TreeNode{name='D', children=[]}, TreeNode{name='E', children=[]}]}]}
c.remove(e);
System.out.println(a);
//TreeNode{name='A', children=[TreeNode{name='B', children=[]}, TreeNode{name='C', children=[TreeNode{name='D', children=[]}]}]}
}
}
本文深入探讨了组合模式,一种用于创建树状层次结构的设计模式,旨在实现部分-整体的关系,确保用户能够一致地访问单个对象和组合对象。通过具体代码示例,展示了如何构建和操作树形结构,体现了模式的灵活性和实用性。

被折叠的 条评论
为什么被折叠?



