组合模式(文件夹的扫描)

    技术2022-07-12  72

    class Folder { constructor(name){ this.name = name; this.files = []; this.parent= null;//添加父类 } add(file){ file.parent = this;//设置父对象 this.files.push(file) } scan(){ console.log('开始扫描文件夹:'+this.name) for(var i = 0;i<this.files.length;i++){ this.files[i].scan() } } remove(){ if(!this.parent){ //根节点或树外节点 return } for(var files = this.parent.files,l = files.length-1;l>=0;l--){ //删除当前节点 var file =files[l] if(file===this){ files.splice(l,1) } } } } class File { constructor(name){ this.name = name this.parent = null } add(){ throw new Error('文件下不可新增') } scan(){ console.log('开始扫描文件:'+this.name) } remove(){ if(!this.parent){ return } for(var files = this.parent.files,l = files.length-1;l>=0;l--){ var file =files[l] if(file===this){ files.splice(l,1) } } } } var folder = new Folder('学习资料'); var folder1 = new Folder('JavaScript'); var folder2 = new Folder('jquery') var file1= new File('JavaScript设计模式与开发实践') var file2 =new File('精通Jquery') var file3= new File('重构与模式') folder1.add(file1) folder2.add(file2) folder.add(folder1) folder.add(folder2) folder.add(file3) var folder3 = new Folder('NodeJs') var file4 = new File('深入浅出Nodejs') folder3.add(file4) var file5 = new File('JavaScript语言精髓与编程实践') folder.add(folder3) folder.add(file5) folder1.remove() folder.scan()

    输出结果

    Processed: 0.019, SQL: 9