In class-based programming, the factory method pattern is a creational pattern that uses factory methods to deal with the problem of creating objects without having to specify the exact class of the object that will be created

https://en.wikipedia.org/wiki/Factory_method_pattern

En la programación basada en clases, el patrón Método Fábrica es de tipo creacional y se caracteriza por el uso de métodos para lidiar con la creación de objetos sin tener la necesidad de especificar la clase de este.

Veamos un caso práctico y tratemos de explicar este patrón en el camino.

Imaginemos que estamos trabajando en el desarrollo de un sistema para el que se nos ha encargado, como parte de los requerimientos, que este cuente con la posibilidad de utilizar diferentes motores de base de datos y que posteriormente se puedan integrar otros motores de manera sencilla. Esto podría deberse a que se pretende que nuestro sistema sea compatible con las principales soluciones del mercado, sin la necesidad de depender de una marca o proveedor específico, dándole la posibilidad al cliente de utilizar la infraestructura actual para usar nuestra solución, además, podríamos contar con una versión standalone que pueda trabajar con archivos de datos locales sin la necesidad de instalar un motor específico que nos demande recursos adicionales, o bien, contar con una versión cloud que pueda implementarse utilizando los motores propios de los proveedores.

Para lograr este objetivo, podríamos implementar este patrón en la capa de datos con el fin de contar con un método que nos ayude a generar instancias de diferentes tipos que satisfagan una interfaz común, misma que definirá los métodos por medio de los que interactuaremos con los diferentes motores de datos sin la necesidad de conocer su tipo.

Factory Method

De esta manera, el método Factory() sería responsable de inicializar el tipo requerido de manera particular, retornando la instancia “mínima necesaria” para interactuar con los datos.

Ejemplo adicional

Supongamos que queremos agregar la posibilidad de importar/exportar datos de nuestra aplicación hacia diferentes archivos, esto podría ser con el fin de contar con un método para generar respaldos de una DB o bien, para obtener y salvar configuraciones de nuestra app, por ejemplo.

En este caso daremos soporte a los formatos: JSON, TOML, YAML y XML.

Salida

Palabras finales

La implementación de patrones como este no solo nos ayudan a mantener organizado de forma lógica nuestro código, además nos permite realizar modificaciones posteriores de manera práctica sin la necesidad de analizar tanto código y siguiendo la misma estructura; esto nos lo agradecerán otros programadores con los que colaboremos.

Nuevamente quiero invitarlos a platicar de estos temas en nuestro servidor en Discord al que pueden acceder desde la sección comunidad o dando click en el enlace.

Me gustaría conocer tu opinión, déjame un comentario más abajo o en cualquiera de mis redes sociales, de igual forma si te gustaría sugerir un tema o tienes alguna sugerencia.

@umarquez