4

我正在寻找关于将工厂设计模式实现到 Backbone.js 集合是否是一个糟糕的实现的建议。

Collections.MyObjects = Backbone.Collection.extend({

    model: Models.MyObject

});

Collections.MyObjects.getInstance = (function(){

    var instances = {},
        defaultName = 'default';

    return function(name)
    {
        name = name || defaultName;

        if (!instances[name])
        {
            instances[name] = new Collections.MyObjects();
        }

        return instances[name];
    };

})();

我正在寻找替代实现和性能优化/理论。

4

1 回答 1

1

这是受@numbers1311407 对该问题的评论启发的替代实现。

Collections.MyObjects = Backbone.Collection.extend({

    model: Models.MyObject

});

Collections.MyObjects.instance = (function(){

    var instances = {},
        defaultName = 'default';

    return {
        "get": function(name) {
            name = name || defaultName;

            if (!instances[name])
            {
                instances[name] = new Collections.MyObjects();
            }

            return instances[name];
        },
        "delete": function(name) {
            name = name || defaultName;

            if (!instances[name]) return false;

            delete instances[name];
            return true;
        }
    };

})();

未测试。

于 2012-11-13T10:32:43.910 回答