4
我要找的建议在此实现工厂设计模式的Backbone.js的集合是否是一个坏的实现。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];
};
})();
我正在寻找替代实现和性能优化/理论。
你可能想提供一种方法来删除实例,否则'instances'对象将永远指向生成的每个实例。 – numbers1311407
@ numbers1311407非常好的一点。在我的实现中,我实际上希望只使用默认名称来知道,但是您的观点对于实现肯定是有效的。你有什么建议可以巧妙实施? –
如果你的代码是一个模块(requireJS等),有好多没有必要私有化'instances'变量,你可以在上面用尽可能多的功能,你只想要工作。如果不是,你可以在同一个闭包中包装(获取和删除实例)函数定义。 – numbers1311407