2016-03-21 12 views
-3

Я разговаривал с моим другом, который имеет около 9 лет опыта JS. Он помогал мне с проблемой кода и говорил о закрытиях, а также о фабриках javascript. Я никогда не слышал этого термина раньше, и мне было интересно, есть ли «фабрики» в сообществе/языке javascript? Если да, может кто-нибудь, пожалуйста, объясните мне это?Javascript: Что за фабрики?

Я знаю, что такое закрытие, но, по его словам, «заводы» являются следующим уровнем в изучении языка.

+1

[завод шаблон] (https://addyosmani.com/resources/essentialjsdesignpatterns/book/#factorypatternjavascript) – Tushar

+0

Google для "программирования завода". –

+1

https://en.wikipedia.org/wiki/Factory_(object-oriented_programming) –

ответ

1

От Wikipedia:

В программировании на основе классов, шаблон Фабричного метода является Творением модели, которая использует фабричные методы для решения проблемы создания объектов без указания точного класса объект, который будет создан . Это делается путем создания объектов путем вызова фабричного метода - либо указанного в интерфейсе, либо реализованного дочерними классами , либо реализованного в базовом классе и необязательно переопределенного производными классами , а не путем вызова конструктора.

От Learning JavaScript Design Patterns:

Фабрика картина другая картина Творения дело с понятием создания объектов. Там, где он отличается от других шаблонов в своей категории, он явно не требует от нас использования конструктора . Вместо этого Factory может предоставить общий интерфейс для создания объектов , где мы можем указать тип фабричного объекта, который мы хотим создать .

Представьте, что у нас есть фабрика пользовательского интерфейса, где нам предлагается создать тип компонента . Вместо того, чтобы создавать этот компонент напрямую с помощью нового оператора или другого конструктора создания, мы запрашиваем вместо объекта Factory для нового компонента. Сообщаем Фабрике, что требуется тип объекта (например, «Кнопка», «Панель»), и он создает экземпляр , возвращая его нам для использования.

Это особенно полезно, если процесс создания объекта относительно сложный, например. если это сильно зависит от динамических факторов или конфигурации приложения .

Примеры этого шаблона можно найти в библиотеках пользовательского интерфейса, таких как ExtJS , где методы создания объектов или компонентов могут быть дополнительно подклассы.

Пример:

var Brand = { 
    Daihatsu : function(type) { 
     this.type = type; 
    }, 
    Honda : function(type) { 
     this.type = type; 
    }, 
    Toyota : function(type) { 
     this.type = type; 
    } 
}; 

var Car = { 
    factory : function(brand, type) { 
     return new Brand[brand](type); 
    } 
}; 

var cars = [ 
    Car.factory('Honda', 'Civic'), 
    Car.factory('Toyota', 'AYGO'), 
    Car.factory('Daihatsu', 'Consorte'), 
    Car.factory('Toyota', 'Carina') 
]; 
+0

Я думаю, что вам вообще не рекомендуется использовать 'new' с заводской узор. – saadq

Смежные вопросы