DEV Community

Juan Miguel Arias Mejias for 4GeeksAcademy

Posted on

3 1

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

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more