Descripción de la solucion:
Problema: Actualmente, el sistema instancia mediante la palabra reservada new las 9 clases DAO de la carpeta "Controlador" (ClienteGestionDao, VentaGestionDao, CalzadoGestionDao, etc.) cada vez que se realiza una consulta a la base de datos. Esto genera un desperdicio de memoria y una sobrecarga innecesaria en el Garbage Collector, ya que se crean múltiples objetos para clases que no guardan un estado propio y cuya única función es transaccional.
Solución propuesta: Se aplicó el patrón de diseño creacional Singleton en las 9 clases DAO involucradas. Para lograrlo, se realizaron las siguientes modificaciones en el código fuente:
- Se cambió el nivel de acceso de los constructores predeterminados a private para bloquear instanciaciones externas.
- Se declaró una variable estática privada (ej. private static CalzadoGestionDao instancia;) en cada clase.
- Se implementó un método estático público getInstance() para garantizar que exista una única instancia global de cada DAO durante todo el ciclo de vida de la aplicación.
Consecuencias e implicaciones del rediseño:
• Se reduce drásticamente el consumo de memoria RAM. Se centraliza el acceso a las conexiones de la base de datos, mitigando riesgos de bloqueos o errores de concurrencia.
• Se introduce un estado global en la arquitectura del sistema, lo cual aumenta levemente el acoplamiento y requerirá configuraciones adicionales.

Descripción de la solucion:
Problema: Actualmente, el sistema instancia mediante la palabra reservada new las 9 clases DAO de la carpeta "Controlador" (ClienteGestionDao, VentaGestionDao, CalzadoGestionDao, etc.) cada vez que se realiza una consulta a la base de datos. Esto genera un desperdicio de memoria y una sobrecarga innecesaria en el Garbage Collector, ya que se crean múltiples objetos para clases que no guardan un estado propio y cuya única función es transaccional.
Solución propuesta: Se aplicó el patrón de diseño creacional Singleton en las 9 clases DAO involucradas. Para lograrlo, se realizaron las siguientes modificaciones en el código fuente:
Consecuencias e implicaciones del rediseño:
• Se reduce drásticamente el consumo de memoria RAM. Se centraliza el acceso a las conexiones de la base de datos, mitigando riesgos de bloqueos o errores de concurrencia.
• Se introduce un estado global en la arquitectura del sistema, lo cual aumenta levemente el acoplamiento y requerirá configuraciones adicionales.