什么是组合模式?
组合模式(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},
]
}
]
}