Показать сообщение отдельно
  #3 (permalink)  
Старый 22.06.2012, 13:30
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от tadjik1 Посмотреть сообщение
Привет.
Недавно совсем узнал о таком понятии как фабрика, хотелось бы спросить, в каких случаях её стоить применять, каким образом это делать лучше, на чем основано её применение?
Этот шаблон применяется, когда нужно выполнить повторяющиеся операции при создании похожих объектов. Объекты, созданные таким образом, обычно имеют один прототип. Самое главное, эти объекты являются подклассами, которые реализуют специализированные функциональные возможности.

Пример кода - классический пример фабрики.
function factory() {}

// это будет у всехэкземпляров, созданных фабрикой
factory.prototype.say = function(){ 
    alert( "Привет. Я : " + this.sex );
}

// фабричный метод
factory.make = function(type){
    var copy;

    // чтобы каждый раз не устанавливать прототип.
    if (factory[type].prototype.say === undefined) {
        factory[type].prototype = new factory();
    }

    copy = new factory[type]();

    // что-нибудь ещё добавляем.
    copy.creationTime = Date.now();

    return copy;
}

// конструкторы узкоспециализированных классов.
factory.male = function() {
    this.sex = "male";
};
factory.female = function() {
    this.sex = "female";
};

// использование
var one = factory.make("male");
var two = factory.make("female");

one.say();
two.say();
Ответить с цитированием