組合模式

2015-06-13  本文已影响15人  JohnSmith

定義

又叫做部分-整體模式,它使我們樹形結構的問題中,模糊了簡單元素和複雜元素的概念,客戶程序可以像處理簡單元素一樣來處理複雜元素,從而使得客戶程序與複雜元素的內部結構解耦。

要點

核心代碼

// 文件夾和文件
var Folder = function(name) {
    this.name = name;
    this.files = [];
    this.parent = null;
};
Folder.prototype.add = function(file) {
    this.files.push(file);
    file.parent = this;
};
Folder.prototype.scan = function() {
    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(file) {
    throw new Error('不能添加在文件下面');
};
File.prototype.scan = function() {
    // ......
};
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);
        }
    }
};
上一篇 下一篇

猜你喜欢

热点阅读