фабрика в javascript
Привет.
Недавно совсем узнал о таком понятии как фабрика, хотелось бы спросить, в каких случаях её стоить применять, каким образом это делать лучше, на чем основано её применение? |
то есть, фабрика — это объект, который содержит ссылки на конструкторы?
у меня есть 4 конструктора (Backbone.View), я не хочу знать о каждом из них. я просто создаю объект, который имеет метод create и знает обо всех 4 конструкторах. передавая в create тип вью, который мне надо получить, я его и получаю. так? var a1 = Backbone.View({}); var a2 = Backbone.View({}); var a3 = Backbone.View({}); var a4 = Backbone.View({}); function b() { var types = { first: a1, second: a2, third: a3, fourth: a4 }; return { create: function (type) { var c; c = new types[type](); return c; } } } var d = new b(); d.create('first'); //мне не нужно знать, какой именно конструктор это сделает, достаточно просто сказать, что я хочу получить |
Цитата:
Пример кода - классический пример фабрики. 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(); |
Maxmaxmахimus, ты знаешь, что такое паттерн "стратегия"?
Цитата:
Цитата:
Цитата:
Цитата:
Это фабрика что-ли, по-твоему? function Universe(){ if (!(this instanceof Universe)) return new Universe(); this.foo = "bar"; } Universe(); |
это синглтон)) вот с ним я разобрался, а теперь не могу нкиак догнать применимость в фабрики в проекте с бекбоном.
подскажите, пожалуйуста, всё ли я правилно понял в примере, который привел? конструкторами там являются backbone.view |
Цитата:
// первый пример var singleton = { /* обычный хеш */ }; // второй пример // при вызове возвращается уже давно созданный объект function Universe(){ var uni = {}; // это он Universe = function(){ return uni; } return uni; } Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
в проекте будут использоваться формы, причем их будет много (разный дизайн, разные правила валидации и наполнение). одна форма — это будет одна модель и одна вью бекбон. а вот для построения должена использоваться фабрика. |
Цитата:
var a = new Universe(); var b = new Universe(); a === b //true |
блин, опять всё сваливается в разговоры «ты не знаешь, я знаю, ты не прав, я прав». предлагаю не вестить на провокации, каждый думает в меру своего профессионализма)
я вот до сих пор не понимаю, каким образом применять фабрику в бекбоновом проекте) созадёт ли сам бекбон еще один уровень абстрации или нет. ведь с однйо стороны вью расширяют стандартный класс бекбона, с другой стороны вы приводите примеры фабрик «на самом примитивном уровне». видимо я совсем не пойму сути, поэтмоу очень прошу вас указать на хорошие источники, либо объяснить на конкретном примере (коде, который я привел). |
Цитата:
Цитата:
Цитата:
http://javascript.ru/forum/183277-post4.html читай :lol: Цитата:
нет, просто у этих двух есть общие черты. |
Часовой пояс GMT +3, время: 03:06. |