Factory

Factory es un patrón creacional que provee una interfaz para crear objetos en una superclase, y permite a las subclases decidir qué tipo de objetos crear.

class Vehiculo {
    constructor(_name, _wheels) {
        this._name = _name;
        this._wheels = _wheels;
    }
    describir() {
        return `El vehículo: ${this._name}, Tiene: ${this._wheels} ruedas`;
    }
}

class Moto extends Vehiculo {
    constructor() {
        super("Moto", 2)
    }
}
class Camion extends Vehiculo {
    constructor() {
        super("Camion", 6)
    }
}
class Coche extends Vehiculo {
    constructor() {
        super("Coche", 4)
    }
}
class VehiculoFactory {
    createByWheels(numWheels) {
        if (numWheels == 2) {
            return new Moto();
        }
        if (numWheels == 4) {
            return new Coche();
        }
        if (numWheels == 6) {
            return new Camion();
        }
    }
}

const fabricar = new VehiculoFactory();
const moto = fabricar.createByWheels(2)
const coche = fabricar.createByWheels(4)
const camion = fabricar.createByWheels(6)

console.log(moto.describir())
console.log(coche.describir())
console.log(camion.describir())

Superclase común

Vehiculo

Subclases

Moto, Coche, Camión

Clase Factory

VehiculoFactory

Nota: Este es un ejemplo de uso del patrón Factory en Javascript