Patrón Factory Method

PUBLICADO: 2026-07-21
AUTOR: MANUEL PRIETO
Patrones de Diseño

Factory Method es un patrón de diseño creacional que proporciona una interfaz para crear objetos en una superclase, pero permite a las subclases alterar el tipo de objetos que se crearán.

Propósito y Caso de Uso

El patrón Factory Method sugiere reemplazar las llamadas directas de construcción de objetos (usando el operador new) por llamadas a un método fábrica especial. Es ideal cuando no sabes de antemano los tipos exactos y las dependencias de los objetos con los que debe trabajar tu código.

Ventajas Principales (SOLID):

  • Evita el acoplamiento fuerte: Desacopla el código cliente de las clases de productos concretos.
  • Principio de Responsabilidad Única (SRP): Centraliza el código de creación de productos en clases creadoras específicas.
  • Principio de Abierto/Cerrado (OCP): Puedes incorporar nuevos tipos de productos en la aplicación sin romper el código cliente existente.

Estructura del Patrón

La arquitectura conceptual consta de cuatro elementos principales:

  1. Producto (Interfaz): Declara la interfaz común a todos los objetos que pueden ser creados por el creador y sus subclases.
  2. Productos Concretos: Implementaciones distintas de la interfaz de producto.
  3. Creador (Clase Abstracta / Interfaz): Declara el método fábrica que devuelve nuevos objetos de producto.
  4. Creadores Concretos: Sobrescriben el método fábrica base para devolver una instancia de un producto concreto distinto.
Cargando diagrama...

Cómo Funciona

  1. Definición de Interfaz: Define una interfaz uniforme para todos los productos (ej. Notification).
  2. Implementación Concreta: Implementa clases concretas (ej. EmailNotification, SMSNotification, PushNotification).
  3. Jerarquía del Creador: Define un creador abstracto con el método fábrica createNotification().
  4. Delegación a Subclases: Las subclases sobrescriben el método fábrica para devolver instancias específicas según la lógica de negocio.

Ejemplos de Implementación en el Mundo Real

Caso Práctico en Código

Si deseas ver una refactorización real de un panel de administración en React/TypeScript aplicando este patrón junto con SOLID y YAGNI, consulta nuestro ejemplo práctico:

💡 Ver Caso Práctico: Ejemplo Práctico del Patrón Factory