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:
typescriptCopycodeinterfaceVehicle{drive(): void;stop(): void;}classCarimplementsVehicle{drive(){console.log('Car is driving...');}stop(){console.log('Car stopped.');}}classTruckimplementsVehicle{drive(){console.log('Truck is driving...');}stop(){console.log('Truck stopped.');}}classVehicleFactory{createVehicle(type:string):Vehicle{if (type ==='car') {returnnewCar();}elseif (type ==='truck') {returnnewTruck();}else{thrownewError('Invalid vehicle type.');}}}// Uso de la fábricaconstfactory=newVehicleFactory();constcar=factory.createVehicle('car');car.drive();// Output: Car is driving...car.stop();// Output: Car stopped.consttruck=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.