Вот три основных способа использования фабрик в JavaScript:
Фабрика объектов// Объявление фабрики объектов
function Idiot(name) {
return { name: name };
}
// создание экземпляра объекта
var idiot1 = Idiot('Bill');
console.dir(idiot1);
Фабрика классов// Объявление фабрики классов
function PhilosophySchool(schoolName) {
return function Philosopher(name) {
return { name: name, school: schoolName };
};
}
// Создание класса
var Stoicism = PhilosophySchool('Stoicism');
var philosopher = Stoicism('Marcus Aurelius');
console.dir(philosopher);
Фабрика прототипов// Объявление базового прототипа
function Engineer(specialization) {
this.specialization = 'Software';
};
Engineer.prototype.getName = function() {
return this.specialization + ' engineer ' + this.name;
}
// Объявление фабрики
function University(specialization) {
function factoryConstructor(name) {
this.name = name;
};
factoryConstructor.prototype = new Engineer(specialization);
return factoryConstructor;
}
// Создание конструктора инженеров-программистов
SoftwareEngineer = University('Software');
// Создание экземпляра инженера-программиста
var alex = new SoftwareEngineer('Alex');
console.dir(alex.getName());