Factory

El patrón de diseño Factory Method (Método de FÔbrica) es un patrón creacional que define una interfaz para crear un objeto, pero deja que las subclases decidan qué clase concreta instanciar. Esto permite que una clase delegue la creación de objetos a sus subclases.

Un ejemplo común del patrón Factory Method es una fÔbrica de vehículos. Tenemos una interfaz llamada Vehicle que define métodos como drive() y stop(). Luego, tenemos varias subclases que implementan esta interfaz, como Car, Truck, Motorcycle, etc.

Ahora, en lugar de que una clase cliente (por ejemplo, un concesionario de vehƭculos) cree directamente un objeto Car, Truck o Motorcycle, puede utilizar un mƩtodo de fƔbrica que decida quƩ tipo de vehƭculo instanciar. Por ejemplo:

typescriptCopy codeinterface Vehicle {
  drive(): void;
  stop(): void;
}

class Car implements Vehicle {
  drive() {
    console.log('Car is driving...');
  }

  stop() {
    console.log('Car stopped.');
  }
}

class Truck implements Vehicle {
  drive() {
    console.log('Truck is driving...');
  }

  stop() {
    console.log('Truck stopped.');
  }
}

class VehicleFactory {
  createVehicle(type: string): Vehicle {
    if (type === 'car') {
      return new Car();
    } else if (type === 'truck') {
      return new Truck();
    } else {
      throw new Error('Invalid vehicle type.');
    }
  }
}

// Uso de la fƔbrica
const factory = new VehicleFactory();
const car = factory.createVehicle('car');
car.drive(); // Output: Car is driving...
car.stop(); // Output: Car stopped.

const truck = factory.createVehicle('truck');
truck.drive(); // Output: Truck is driving...
truck.stop(); // Output: Truck stopped.

En este ejemplo, VehicleFactory es la fÔbrica que decide qué tipo de vehículo crear. La clase cliente solo necesita especificar el tipo de vehículo que desea y la fÔbrica se encarga del resto. Esto hace que el código sea mÔs flexible y fÔcil de mantener, ya que la lógica de creación estÔ encapsulada en la fÔbrica.

Last updated