组合模式(Composite)

组合模式

一.组合模式

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

    原文作者:设计模式
    原文地址: https://segmentfault.com/a/1190000014961726
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注