组合模式
一.组合模式
1.1 定义
- 将对象组合成树形结构以表示“部分-整体”的层次结构.
- 组合模式使得用户对单个对象和组合对象的使用具有一致性.
二.实现
2.1 创建节点类
public class Node {
private String id;
private String name;
private String parentId;
private List<Node> children = new ArrayList<>();
public Node(String id, String name, String parentId) {
this.id = id;
this.name = name;
this.parentId = parentId;
}
//getter,setter方法
public void add(Node node){
List<Node> nodeList = this.getChildren();
nodeList.add(node);
this.setChildren(nodeList);
}
public void print(){
System.out.println("node:" + getName());
for(Node node : children){
node.print();
}
}
}
2.2 调用
public static void main(String[] args) {
Node node = new Node("1", "root", "");
Node node1 = new Node("2", "composite1", "1");
Node node2 = new Node("3", "leaf1", "1");
Node node3 = new Node("4", "leaf2", "2");
node1.add(node3);
node.add(node1);
node.add(node2);
node.print();
}
2.3 输出
node:root
node:composite1
node:leaf2
node:leaf1
三.优缺点
3.1 优点
- 调用简单.
- 节点自由增加.
3.2 缺点
- 类间组合,违反依赖倒置原则.
四.源码
https://github.com/Seasons20/DisignPattern.git
END