Patrón de fábrica

El patrón de fábrica es un patrón de diseño creacional que se utiliza para crear objetos de manera eficiente y efectiva.

Este patrón se utiliza cuando se necesita crear un gran número de objetos similares. El patrón de fábrica se utiliza para encapsular la creación de objetos y permitir que el cliente no tenga que conocer la complejidad de la creación de objetos.

¿Cómo funciona?

El patrón de fábrica funciona creando un objeto de fábrica que se encarga de crear objetos. La fábrica tiene un método que se utiliza para crear objetos. Cuando se llama al método, la fábrica crea un nuevo objeto y lo devuelve al cliente. El cliente no tiene que saber cómo se creó el objeto, solo que se creó.

Ejemplo de uso

Un ejemplo común de uso del patrón de fábrica es en la creación de objetos de base de datos. Si se está trabajando con una base de datos relacional, hay diferentes objetos que se necesitan crear, como conexiones de base de datos, consultas, etc. En lugar de que el cliente tenga que crear estos objetos, se puede utilizar el patrón de fábrica para crearlos.

Ventajas

  • Permite la creación eficiente de objetos

  • Encapsula la complejidad de la creación de objetos

  • Promueve la modularidad del código

Desventajas

  • Puede ser demasiado complejo para proyectos pequeños y simples

  • Puede haber sobrecarga de clases debido a la necesidad de crear múltiples clases para implementar el patrón de fábrica

En resumen, el patrón de fábrica es una técnica útil para crear objetos de manera eficiente y efectiva. Si se está trabajando en un proyecto que requiere la creación de muchos objetos similares, el patrón de fábrica puede ser una buena opción para encapsular la complejidad de la creación de objetos.

Si deseas implementar el patrón de fábrica en tu proyecto, hay algunas cosas que debes considerar. Primero, debes identificar los objetos que necesitas crear y las diferentes variaciones que pueden tener. Luego, debes crear una interfaz común para estos objetos para que la fábrica pueda crearlos de manera consistente.

Después de crear la interfaz, debes crear una clase fábrica que implemente la interfaz. La clase fábrica debe tener un método para crear cada variación del objeto.

Finalmente, debes utilizar la clase fábrica para crear los objetos en tu código. En lugar de crear los objetos directamente, llamas al método de la fábrica para crearlos.

El patrón de fábrica es un patrón de diseño muy útil en la programación orientada a objetos. Si se usa correctamente, puede mejorar la eficiencia y la modularidad del código. Sin embargo, debes tener cuidado de no utilizarlo en proyectos pequeños o simples, ya que puede agregar una sobrecarga innecesaria al código.

Ejemplo

Aquí hay un ejemplo de implementación del patrón Factory Method en JavaScript:

// Clase básica
class Vehicle {
    constructor(brand, color) {
        this.brand = brand;
        this.color = color;
    }
    startEngine() {
        console.log(`El vehículo ${this.brand} ${this.color} ha arrancado su motor.`); // Se corrigió el paréntesis
    }
}

// Clase Coche
class Car extends Vehicle {
    startEngine() {
        console.log(`El coche ${this.brand} arrancó su motor.`); // Se corrigió el paréntesis
    }
}

// Clase Moto
class Motorbike extends Vehicle {
    startEngine() {
        console.log(`La moto ${this.brand} arrancó su motor.`); // Se corrigió el paréntesis
    }
}

// Clase Fábrica
class VehicleFactory {
    createVehicle(type, brand, color) { // Se añadió el parámetro 'color'
        switch (type) {
            case "car":
                return new Car(brand, color); // Ahora se pasa 'color'
            case "motorbike":
                return new Motorbike(brand, color); // Ahora se pasa 'color'
            default:
                console.log(`No se reconoce el tipo de vehículo ${type}`);
                return null; // Se añade un retorno en caso de que el tipo no sea reconocido
        }
    }
}

// Usamos la fábrica
const factory = new VehicleFactory();
const myCar = factory.createVehicle("car", "Honda", "Civic"); // Se pasó el parámetro 'color'
const myMotorbike = factory.createVehicle("motorbike", "Yamaha", "R6"); // Se pasó el parámetro 'color'

myCar.startEngine();
myMotorbike.startEngine();

Explicación

  • Patrón Fábrica: La clase VehicleFactory actúa como una fábrica que crea objetos de diferentes tipos (Car o Motorbike) según el tipo que se pase a la función createVehicle. Esto permite una creación de objetos centralizada y facilita la extensión si en el futuro se agregan más tipos de vehículos.

  • Métodos específicos: El método startEngine() es sobrescrito en las clases Car y Motorbike, lo que permite tener un comportamiento diferente para cada tipo de vehículo.

Fuentes

Última actualización