组合模式
组合模式的定义:将对象组合成树形结构以表示部分-整体的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
简单来说就是把对象之间组合成树状结构,能通过一个元素的方法调用它的所有子元素的同名方法。
因为现在还没遇到过需要这个模式解决的问题,拿书上的文件夹例子来说明吧:
class Folder {
constructor(name) {
this.fileName = name;
this.children = [];
}
add(child) {
this.children.push(child);
}
scan() {
console.log("Folder:" + this.fileName);
for (const child of this.children) {
child.scan();
}
}
}
class File {
constructor(name) {
this.fileName = name;
}
add() {}
scan() {
console.log("File:" + this.fileName);
}
}
const folder1 = new Folder("first");
folder1.add(new File("file1"));
folder1.add(new File("file2"));
const folder2 = new Folder("secend");
folder2.add(new File("file3"));
folder1.add(folder2);
folder1.scan();
这样,通过调用第一个文件夹的扫描方法就能调用所有子元素的扫描方法。