Я хочу отделить создание объектов JavaScript от кода, который его использует, чтобы у меня была возможность заменить одну реализацию объекта другой реализацией объекта, имеющей такую же сигнатуру, не затрагивая большую часть кода.Чтобы достичь этого, я придумываю концепцию Repository и Factory Method для создания объектов.Вот реализация:
//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.
Спасибо