En el artículo de la semana pasada hablamos sobre los patrones de diseño y su importancia en el desarrollo de software.

En el artículo de hoy seguiremos hablando sobre patrones de diseño de software, y nos centraremos en el “método fábrica”, un patrón de diseño creacional que proporciona una interfaz.

Esta interfaz sirve para crear objetos en una superclase, y las subclases pueden alterar el tipo de objetos que se crearán. La idea es que “una clase delegue en sus subclases la creación de objetos”.

Intentaremos no entrar en demasiados detalles técnicos, y finalmente enlazaremos a un ejemplo real.

¿Qué problema resuelve el método fábrica?

Una aplicación típica del patrón método fábrica es en aplicaciones de gestión logística, otra seria en aplicaciones que conectan con diferentes redes sociales.

En relación a aplicaciones de logística, puedes pensar en el caso en que tu aplicación fue desarrollada solamente para gestionar el transporte de camiones, y la mayor parte de tu código está dentro de una clase Truck.

Si la aplicación se vuelve popular, empresas de otros tipos de transporte te pueden pedir para incorporar otros tipos de logística en la aplicación, por ejemplo la marítima (clase Ship), o ferroviaria (clase Train).

Para no acabar con un código, “de miedo”, lleno de condicionales que cambian el comportamiento de la aplicación según la clase de objetos de transportes (Truck, Ship, Train), el patrón método de fábrica sugiere que reemplaces las llamadas directas de construcción de objetos (usando el operador new) por llamadas a un método de fábrica especial. Puedes ver un ejemplo en el link del final del artículo.

Productos

Por cierto, los objetos devueltos por un método de fábrica se suelen denominar productos.

¿Cuándo usar el método fábrica (Factory Method)?

Podrías usar este método cuando:

  • no sepas de antemano los tipos exactos y las dependencias de los objetos con los que debe trabajar tu código.
  • desees proporcionar a los usuarios de tu framework una forma de extender sus componentes internos.
  • desees ahorrar recursos del sistema reutilizando objetos existentes en lugar de reconstruirlos cada vez.

Pros y contras del patrón método fábrica

Los siguientes son algunos de los “pros y cons” de este patrón.

Pros

Contras

  • Principio de responsabilidad única. Puedes mover el código de creación del producto a un lugar en el programa. Esto facilita el soporte del código. 

  • Principio abierto/cerrado. Puedes introducir nuevos tipos de productos en el programa sin romper el código de cliente existente. 

  • El código puede volverse más complicado a medida que introduzcas subclases nuevas para implementar el patrón. 

“Show me the code”

Para que tengas una idea concreta sobre el patrón método fábrica, puedes ver este ejemplo de refacoring.guru en PHP.

En el ejemplo real verás como el patrón Factory Method proporciona una interfaz para crear conectores de redes sociales, sin vincular el código del cliente a clases específicas de determinada red social.

¿Utilizas el patrón Factory Method en tus proyectos? ¿Qué tal la experiencia? ¡Coméntalo abajo!

Fuentes:

Compartir es construir