DEV Community

Factory Method

Hola, hoy venimos con un patrón de diseño creacional.

El Factory Method, es un patrón que nace de la necesidad de abstraer la lógica de creación de un objeto. Es más fácil entenderlo con un ejemplo.

Pongamos en situación que estamos dándole mantenimiento a un sistema de logística, en donde el método de entrega siempre ha sido por tierra y todo bien, el sistema funciona de esta manera por varios años sin problemas. Llega el día, en que nuestra empresa decide diversificar las operación y se toma la decisión de ofrecer logística marítima.

Vaya... parece que tenemos un problema, el sistema solamente esta enfocado a logística terrestre ¿Cómo haremos para resolver este problema? y sobre todo, ¿Cómo haremos para mejorar la escalabilidad del sistema? de manera que puedan haber tantos métodos de logística como se quiera sin mayores modificaciones.

El Factory Method, nos puede ayudar en esta ocasión, es un patrón de diseño creacional listo para abstraer la lógica de la creación.

Ok, estamos listos para implementarlo.

Boat

En este caso, necesitamos pensar en cómo llamaremos de manera general al grupo que envuelve el camión o el bote. Quizás Transporte.

Truck

También necesitamos pensar en cómo llamaremos de manera general al grupo que envuelve la logística Terrestre y el Marítima. Quizás Logística.

Estamos listos.

Por la parte del Transporte tendríamos el siguiente diagrama:

Diagrama transporte

Y por la parte de Logística tendríamos el siguiente:

Diagrama Logistica

En mi GitHub podrán ver la implementación en Golang. Enlace
Muchas gracias por leer
Les dejo mis redes: Enlace

Imágenes y ejemplo tomado de: Enlace

Discussion (0)