js里的组合模式

组合模式

组合模式的定义:将对象组合成树形结构以表示部分-整体的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

简单来说就是把对象之间组合成树状结构,能通过一个元素的方法调用它的所有子元素的同名方法。

因为现在还没遇到过需要这个模式解决的问题,拿书上的文件夹例子来说明吧:

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();

这样,通过调用第一个文件夹的扫描方法就能调用所有子元素的扫描方法。

js里的组合模式

上一篇:Error: The HTTP image filter module requires the GD library – Nginx / CentOS 7.3


下一篇:webpack(六)之HMR