Composite - 组合设计模式

86 阅读1分钟

什么是组合模式?

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。

优缺点

优点:
1.高层模块调用简单。
2.节点自由增加。
3.子对象内部属性修改不会对客户端造成任何影响。

缺点: 使设计变得更加抽象,对象的业务规则如果很复杂,则实现组合模式具有很大挑战性,而且不是所有的方法都与叶子对象有关联。

使用场景

拓扑图,文件目录,组织架构图等等。

Javascript实现

为了能够好的体现组合模式的应用,我直接找了Echart官网的 树状图例子,数据结构如下,每一个节点下都有一个children属性来记录其子节点。通过这样的设计可以构建出复杂数据结构。

funtion Node() {
    this.name;
    this.value;
    this.children = [];
}

data = {
    "name": "flare",
    "children": [
     {
      "name": "animate",
      "children": [
       {"name": "Easing", "value": 17010},
       {"name": "FunctionSequence", "value": 5842},
       {
        "name": "interpolate",
        "children": [
         {"name": "ArrayInterpolator", "value": 1983},
        ]
       },
       {"name": "ISchedulable", "value": 1041},
      ]
     },
     {
      "name": "data",
      "children": [
       {
        "name": "converters",
        "children": [
         {"name": "Converters", "value": 721},
        ]
       },
       {"name": "DataField", "value": 1759},
      ]
     }
    ]
   }