Patrón de Método de Fábrica en Programación Orientada a Objetos

El patrón de método de fábrica es un patrón de diseño creacional que delega la responsabilidad de instanciar objetos a subclases, promoviendo la extensibilidad y el cumplimiento del principio abierto/cerrado.

En el patrón de fábrica simple, toda la lógica de creación se concentra en una única clase, lo que dificulta la escalabilidad cuando surgan nuevos requisitos. Esto viola principios de diseño, ya que cualquier cambio en los tipos de objetos requiere modificar el código fuente existente.

La definición formal establece que una clase abstracta o interfaz define el método de creación, mientras que las subclases concretas implementan la instanciación de objetos específicos.

Para ilustrar, consideremos un sistema de gestión de inventarios donde diferentes proveedores ganeran componentes electrónicos. Cada proveedor especializado se encarga de producir un tipo de componente, y agregar un nuevo componente solo requiere introducir una nueva fábrica sin alterar las existentes.

Componentes del Patrón

Interfaz del producto: define las operaciones comunes.

public interface IComponente
{
    void MostrarDetalles();
}

Producto concreto A:

public class ComponenteTipoA : IComponente
{
    public void MostrarDetalles()
    {
        Console.WriteLine("Componente de tipo A: sensor de temperatura.");
    }
}

Producto concreto B:

public class ComponenteTipoB : IComponente
{
    public void MostrarDetalles()
    {
        Console.WriteLine("Componente de tipo B: módulo de comunicación.");
    }
}

Interfaz de fábrica: establece el contrato para la creación.

public interface IFabrica
{
    IComponente CrearComponente();
}

Fábrica concreta A:

public class FabricaTipoA : IFabrica
{
    public IComponente CrearComponente()
    {
        return new ComponenteTipoA();
    }
}

Fábrica concreta B:

public class FabricaTipoB : IFabrica
{
    public IComponente CrearComponente()
    {
        return new ComponenteTipoB();
    }
}

Ejemplo de uso en el cliente:

static void Main(string[] args)
{
    IFabrica proveedor = new FabricaTipoA();
    IComponente producto = proveedor.CrearComponente();
    producto.MostrarDetalles();
    Console.ReadLine();
}

Este enfoque estructural permite que el cliente opere con abstracciones, desacoplando la creación de objetos de su uso. La arquitectura resultante es modular: cada fábrica maneja un tipo de producto, facilitando la adición de nuevos componentes sin impacto en el código previo.

Desventajas: incrementar la variedad de productos implica crear nuevas clases de fábrica, lo que puede aumentar la complejidad del sistema y dificultar su mantenimiento si no se gestiona adecuadamente.

Etiquetas: Patrón de Diseño método de fábrica C# Programación Orientada a Objetos patrones creacionales

Publicado el 7-25 06:11