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

作者: 高广超 | 来源:发表于2017-06-02 15:08 被阅读147次

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

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

    关系图

    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!"); 
        } 
    } 
    

    个人介绍:

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

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

    image.png

    相关文章

      网友评论

        本文标题:设计模式-组合模式(Composite)

        本文链接:https://www.haomeiwen.com/subject/oldufxtx.html