Volver a la página principal
martes 2 abril 2024
3

Cómo implementar el Patrón Factory Method en TypeScript

El patrón Factory Method es un patrón de diseño creacional que se utiliza para delegar la lógica de creación de objetos a clases especializadas. Este enfoque no solo encapsula la creación de objetos sino que también los centraliza, facilitando el mantenimiento y la expansión del código.

En TypeScript, la implementación de este patrón puede ser particularmente útil debido a su naturaleza tipada, permitiendo una mejor gestión y control de las estructuras de datos utilizadas.

Definiendo la Estructura Básica

El primer paso para implementar el patrón Factory Method en TypeScript es definir una interfaz o una clase abstracta que declare el método factory. Este método es responsable de crear y retornar objetos.

interface Product {
    operation(): string;
}

abstract class Creator {
    public abstract factoryMethod(): Product;

    public someOperation(): string {
        const product = this.factoryMethod();
        return `Creator: El mismo código del creador acaba de trabajar con ${product.operation()}`;
    }
}

Implementando Subclases

Después de definir la estructura básica, el siguiente paso es implementar subclases que extiendan la clase 'Creator'. Cada subclase implementará el método 'factoryMethod' para crear y retornar un objeto específico del tipo 'Product'.

class ConcreteProduct1 implements Product {
    public operation(): string {
        return '{Resultado de ConcreteProduct1}';
    }
}

class ConcreteProduct2 implements Product {
    public operation(): string {
        return '{Resultado de ConcreteProduct2}';
    }
}

class ConcreteCreator1 extends Creator {
    public factoryMethod(): Product {
        return new ConcreteProduct1();
    }
}

class ConcreteCreator2 extends Creator {
    public factoryMethod(): Product {
        return new ConcreteProduct2();
    }
}

Uso del Factory Method

Finalmente, el patrón Factory Method se utiliza creando instancias de las subclases concretas y llamando a sus métodos. Esto permite cambiar el tipo de objeto creado simplemente cambiando la clase concreta utilizada.

function clientCode(creator: Creator) {
    console.log('Cliente: No estoy al tanto del creador concreto de la clase, pero aún funciona.');
    console.log(creator.someOperation());
}

console.log('App: Lanzada con el ConcreteCreator1.');
clientCode(new ConcreteCreator1());
console.log('');

console.log('App: Lanzada con el ConcreteCreator2.');
clientCode(new ConcreteCreator2());

Beneficios y Consideraciones

El patrón Factory Method es especialmente útil para casos donde la lógica de creación de objetos puede involucrar complejidad, permitiendo que esta complejidad sea manejada de manera modular. Además, proporciona una manera elegante de adherirse a los principios de programación orientada a objetos como el encapsulamiento y la separación de preocupaciones.

Sin embargo, es importante considerar que la introducción de múltiples clases y subclases puede aumentar la complejidad del código, por lo que su uso debe ser justificado y bien estructurado.

Compartir:
Autor:
User photo

Jorge García

Fullstack developer