设计模式-组合模式(Composite)

简介: 定义将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便。

定义
将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.

组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便。

关系图

img_e8ef902edd63e3cbd5376ef2ee2cee91.png
image.png

使用场景
当发现需求中是体现部分与整体层次的结构时,以及希望用户可以忽略组合对象与单个对象的不同,统一的使用组合结构中的所有对象时,就应该考虑用组合模式了。

将多个对象组合在一起进行操作,常用于表示树形结构中,例如二叉树等。

代码示例

 public class TreeNode { 
       
    private String name; 
    private TreeNode parent; 
    private Vector<TreeNode> children = new Vector<TreeNode>(); 
       
    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<TreeNode> 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!"); 
    } 
} 

个人介绍:

** 高广超** :多年一线互联网研发与架构设计经验,擅长设计与落地高可用、高性能互联网架构。目前就职于美团网,负责核心业务研发工作。

本文首发在 高广超的简书博客 转载请注明!

img_7015b3c64a6b1e4a95d4739adf2bbaa0.png
image.png
目录
相关文章
|
4月前
|
设计模式
二十三种设计模式全面解析-组合模式与享元模式的结合应用:实现对象的共享和高效管理
二十三种设计模式全面解析-组合模式与享元模式的结合应用:实现对象的共享和高效管理
|
4月前
|
设计模式
二十三种设计模式全面解析-组合模式与迭代器模式的结合应用:构建灵活可扩展的对象结构
二十三种设计模式全面解析-组合模式与迭代器模式的结合应用:构建灵活可扩展的对象结构
|
7天前
|
设计模式 Java
小谈设计模式(20)—组合模式
小谈设计模式(20)—组合模式
|
1月前
|
设计模式 JavaScript uml
设计模式之组合模式
设计模式之组合模式
设计模式之组合模式
|
1月前
|
设计模式 存储 安全
【设计模式】组合模式
【设计模式】组合模式
|
2月前
|
设计模式 Java
浅谈设计模式 - 组合模式(十二)
浅谈设计模式 - 组合模式(十二)
51 0
|
3月前
|
设计模式 存储 安全
聊聊Java设计模式-组合模式
组合(Composite)模式,又叫做树形模式,主要用来处理树形结构数据。是将一组对象组织成树形结构,以表示一种“部分-整体”的层次结构。让客户端可以统一单个对象和组合对象的处理逻辑
29 1
聊聊Java设计模式-组合模式
|
3月前
|
设计模式 存储
设计模式 | 组合模式
设计模式 | 组合模式
12 0
|
3月前
|
设计模式 Go 开发工具
Golang设计模式——17组合模式
Golang设计模式——17组合模式
13 1
|
3月前
|
设计模式 存储 前端开发
【设计模式】之组合模式
组合模式是一种非常有用的设计模式,在前端开发中经常用于处理复杂的层次结构和嵌套关系。它通过将对象组合成树形结构来表示“部分-整体”的关系,并提供了一种优雅而灵活的方式来处理复杂性。通过使用组合模式,我们可以构建可扩展和易于维护的应用程序。然而,需要根据具体情况权衡使用组合模式所带来的优缺点。
39 0