El patrón Factory es una solución habitual para crear objetos, pero ¿y si existiera una forma más flexible y escalable de hacerlo? En este artículo exploramos cómo un enum puede impulsar un proceso de creación dinámica de objetos y cuándo conviene evitarlo.
Imagina un programa que debe ingerir datos desde múltiples fuentes y formatos: volcados de texto, archivos PDF, pasarelas XML, dumps SQL, texto procedente de scraping web y más. Con una interfaz como IDataReader como supertipo, podemos implementar una clase concreta por cada origen. La cuestión clave es cómo seleccionar la implementación correcta en el cliente que invoca la lectura.
Técnica con patrón Factory: lo típico es crear una clase Factoría que centraliza la lógica de decisión para instanciar el tipo adecuado. El cliente pasa un identificador configurable, por ejemplo readerType, y la factoría devuelve la clase concreta que implementa IDataReader. Este enfoque desacopla la creación de objetos del flujo de negocio, respeta principios SOLID como responsabilidad única, abierto/cerrado y favorece la inyección de dependencias, elimina duplicación al concentrar la lógica de creación y ofrece control centralizado y predecible del comportamiento en tiempo de compilación y ejecución. El resultado es código más fácil de mantener y probar.
Contras del patrón Factory: puede requerir clases adicionales que, en escenarios simples, resulten excesivas y compliquen la lectura inicial del proyecto. La inyección de dependencias artesanal puede quedarse atrás frente a frameworks modernos que ya resuelven activación e interconexión automáticamente. Además, si no se diseña bien, se corre el riesgo de caer en una factoría todopoderosa que crea demasiados tipos, volviéndose un punto único de cambio y mantenimiento complejo.
Técnica con Enum: la alternativa concisa consiste en usar un enum cuyos valores mapean a los tipos concretos. Mediante atributos descriptivos y una extensión genérica, se obtiene el nombre de clase totalmente calificado y, con reflexión, se resuelve el tipo y se instancia en tiempo de ejecución. En la práctica, el cliente puede crear objetos dinámicamente sin una clase factoría explícita.
Pros del Enum: sigue el principio abierto/cerrado de forma distinta, ya que añadir un nuevo lector implica agregar un valor al enum y la clase correspondiente, sin tocar la lógica central. Reduce el código repetitivo cuando el mapeo es uno a uno y simple. Además, centraliza el metadato de configuración en el enum, útil si esos identificadores también se exponen en la interfaz, ficheros de configuración o catálogos.
Contras del Enum: se pierde seguridad de tipos y la refactorización automática deja de ayudar, por lo que renombrar clases puede introducir errores silenciosos. La reflexión añade sobrecoste de rendimiento y, según el caso, puede degradar el tiempo de ejecución de forma notable. Depurar también se complica, ya que el flujo depende de metadatos y activación dinámica, lo que puede obligar a ejecutar el código para entenderlo y aumentar el riesgo operativo.
Comparativa y recomendaciones: para la mayoría de los sistemas de producción, el patrón Factory ofrece mayor claridad, testabilidad y seguridad en compilación. La alternativa con enum y reflexión puede resultar útil en prototipos, plugins muy acoplados a metadatos o escenarios extremadamente configurables, pero debe considerarse una excepción y usarse con cautela. Cuando haya dudas, prioriza la robustez, la inyección de dependencias y la observabilidad que brinda la factoría. Si necesitas activación dinámica, valora también contenedores de DI y técnicas como registro por convención, que aportan flexibilidad con menos penalizaciones que un mapeo manual mediante reflexión.
En Q2BSTUDIO ayudamos a equipos técnicos y de negocio a diseñar arquitecturas limpias y escalables, desde aplicaciones a medida y software a medida hasta soluciones de inteligencia artificial, ciberseguridad, servicios cloud AWS y Azure, servicios inteligencia de negocio y power bi, ia para empresas y agentes IA. Si buscas una base sólida para tus productos digitales y una estrategia tecnológica que priorice mantenibilidad y rendimiento, descubre cómo trabajamos en desarrollo de aplicaciones y software multiplataforma o impulsa tus capacidades con nuestras soluciones de inteligencia artificial para empresas.
Palabras clave recomendadas para este tema: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.
Conclusión: el patrón Factory sigue siendo la opción recomendable para proyectos profesionales por su claridad y seguridad. La creación dinámica basada en enums es una alternativa con pros y contras muy marcados y, mal aplicada, se convierte en un antipatrón con peligros ocultos en mantenibilidad, rendimiento y depuración. Elegir bien la técnica desde el inicio ahorra costes y fricciones a largo plazo.
© Ketki Ambekar 2025