Tiempo de lectura: 4 minutos

Patrón Factory Method – Método de Factorías

El patrón Factory o Factorías es uno de los patrones más usados aunque también se tiende a decir que es el patrón que peor se usa.

Factory Method es un patrón de creación de objetos y normalmente lo suelo usar para solucionar el problema que se presenta cuando tenemos que crear la instancia de un objeto pero a priori no sabemos aún que tipo de objeto tiene que ser, generalmente, porque depende de alguna opción que seleccione el usuario en la aplicación o porque depende de una configuración que se hace en tiempo de despliegue de la aplicación.

Este patrón está compuesto por:

  • Product: Define la interfaz de los objetos que de van a crear.
  • ConcreteProduct: Implementación de la interfaz.
  • Creator: Declara la factoría y devuelve un objeto del tipo producto. También puede definir una implementación por defecto para la factoria que devolvería un objeto ConcreteProduct por defecto.
  • ConcreteCreator: Sobreescribe el método de la factoría para devolver una instancia concreta de un objeto ConcreteProduct.

Para entenderlo mejor, veamos un ejemplo.

Problema

Tenemos una tienda online donde se le ofrece al usuario tres métodos de pagos distintos: tarjeta, paypal o transferencia bancaria.

 Product

ConcreteProduct

Pago con Tarjeta – Card:

Pago con Paypal

Pago por Transferencia Bancaria:

Concrete Creator & Creator

MainPayment – Clase para probar el patrón.

Como habéis podido observar, si el día de mañana tenemos que añadir una nueva forma de pago, sólo habría que crear un nuevo Concrete Product y añadirlo como opción al Concrete Creator/Creator sin que el proceso de compra (MainPayment) se viera alterado.

Espero que este ejemplo sencillo sea lo suficientemente didáctico. Añadiré más ejemplos en el repositorio Git.

Fuentes:

  • Repositorio GitHub con el ejemplo. Ver

Bibliografía: