組合模式
一.組合模式
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