美文网首页
JavaScript组合模式

JavaScript组合模式

作者: 晓蟲QwQ | 来源:发表于2021-01-01 11:16 被阅读0次

组合模式将对象组合成树形结构,以表示“部分-整体”的层次结构。除了用来表示树形结构之外,组合模式的另一个好处是通过对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性。结合命令模式可以构成宏命令。

var Folder = function( name ){
    this.name = name;
    this.parent = null;
    this.files = [];
}

Folder.prototype.add = function( file ){
    file.parent = this;    //设置父对象
    this.files.push( file );
}

Folder.prototype.scan = function(){
    console.log('开始扫描文件夹:' + this.name );
    for( var i = 0,file,files = this.files;file = files[ i++ ]){
        file.scan();
    }
};

Folder.prototype.remove = function(){
    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 File = function( name ){
    this.name = name;
    this.parent = null;
};

File.prototype.add = function(){
    throw new Error('不能添加在文件下面');
}

File.prototype.scan = function(){
    console.log('开始扫描文件:' + this.name );
};

File.prototype.remove = function(){
    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 file1 = new File('深入浅出Node.js');

folder.add( folder1 );
folder.add( file1 );

folder.remove();   //移除文件夹
folder.scan();

相关文章

  • javascript组合模式

    在程序设计中,组合模式就是用小的子对象来构建更大的对象,而这些小的子对象本身也是由更小的对象组成的。这里只是组合,...

  • JavaScript组合模式

    组合模式将对象组合成树形结构,以表示“部分-整体”的层次结构。除了用来表示树形结构之外,组合模式的另一个好处是通过...

  • 关于JavaScript创建对象的多种方式

    JavaScript创建对象的方法 工厂模式 构造函数模式 原型模式 组合使用构造函数模式和原型模式 动态原型模式...

  • JavaScript设计模式八(组合模式)

    我们先回顾下上一节中的宏命令。 其中marcoCommand被称为组合对象,closeDoorCommand、op...

  • JavaScript 设计模式之组合模式

    引 我们知道地球和一些其他行星围绕着太阳旋转,也知道在一个原子中,有许多电子围绕着原子核旋转。我曾经想象,我们的太...

  • JavaScript 设计模式(八):组合模式

    组合模式:又叫 “部分整体” 模式,将对象组合成树形结构,以表示 “部分-整体” 的层次结构。通过对象的多态性表现...

  • JavaScript设计模式之组合模式

    我们知道地球和一些其他行星围绕着太阳旋转,也知道在一个原子中,有许多电子围绕着原子核旋转。我曾经想象,我们的太阳系...

  • JavaScript进阶:设计模式——组合模式

    1、应用场景 在编写新闻模块时,我们通常会创建图片+文字的一条新闻,或者是icon图标+文字的新闻,也有可能是单纯...

  • (九)

    寄生组合式继承前面说过,组合继承是JavaScript最常用的继承模式;不过,它也有自己的不足。组合继承最大的问题...

  • JavaScript创建对象

    JavaScript中创建对象有以下七种方式: 工厂模式构造函数模式原型模式构造函数和原型组合模式动态原型模式寄生...

网友评论

      本文标题:JavaScript组合模式

      本文链接:https://www.haomeiwen.com/subject/qwfkoktx.html