5
我想将JavaScript对象的创建与正在使用它的代码分离开来,以便我可以灵活地将具有相同签名的其他对象实现替换为一个对象实现,而无需触及大部分代码。为了实现这个,我想出了Repository和Factory Method创建对象的概念。下面是执行:JavaScript中的工厂模式
//The Factory Method
function ObjectFactory() {}
ObjectFactory.create = function (o) {
var args = [].slice.call(arguments, 1);
function F() {}
F.prototype = o.prototype;
var instance = new F();
o.apply(instance, args);
return instance;
};
//The Repository
var Repository = {
'invitation': Invitation,
'message': Message
};
//Usage
var inv = ObjectFactory.create(Repository["invitation"], "invitation", "invitation body", "Sender");
var msg = ObjectFactory.create(Repository["message"], "message", "message body");
var inv2 = ObjectFactory.create(Repository["invitation"], "invitation2", "invitation body2", "Sender");
这种模式为我工作,但我继续前进,实现这个代码在我的项目,我想知道以前是否有任何缺陷(模式的失败来创建对象,性能瓶颈 - 如果我将使用这种方法创建5-10到200行到1000行代码的对象)。我在长时间处理服务器端代码后返回JavaScript,因此我对自己的解决方案并不十分自信。另外,我可以使用ES5 Object.create,但客户现在只能使用IE8和FF3.6浏览器。
感谢
我不知道这个图书馆。感谢您指出。 – Navneet 2011-05-03 01:09:00