定義
將對象以樹形結構組織起來,以達成“部分-整體” 的層次結構,使得客戶端對單個對象和組合對象的使用具有一致性.
組合模式有時又叫部分-整體模式在處理類似樹形結構的問題時比較方便。
關係圖
image.png
使用場景
當發現需求中是體現部分與整體層次的結構時,以及希望用戶可以忽略組合對象與單個對象的不同,統一的使用組合結構中的所有對象時,就應該考慮用組合模式了。
將多個對象組合在一起進行操作,常用於表示樹形結構中,例如二叉樹等。
代碼示例
public class TreeNode { private String name; private TreeNode parent; private Vectorchildren = new Vector (); 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; } //添加孩子節點 public void add(TreeNode node){ children.add(node); } //刪除孩子節點 public void remove(TreeNode node){ children.remove(node); } //取得孩子節點 public Enumeration getChildren(){ return children.elements(); }}
public class Tree { TreeNode root = null; public Tree(String name) { root = new TreeNode(name); } public static void main(String[] args) { Tree tree = new Tree("A"); TreeNode nodeB = new TreeNode("B"); TreeNode nodeC = new TreeNode("C"); nodeB.add(nodeC); tree.root.add(nodeB); System.out.println("build the tree finished!"); }}
個人介紹:
高廣超 :多年一線互聯網研發與架構設計經驗,擅長設計與落地高可用、高性能互聯網架構。
本文首發在 高廣超的簡書博客 轉載請註明!
閱讀更多 互聯網技術棧 的文章