Pregunta

He estado escribiendo una aplicación Java Swing base de datos centradas por un tiempo.

La GUI y DAO-código termina en un gran árbol como:

JFrame
  |
JTabbedPane
    |
   +--------------------+----------------------+-------------+
   |                    |                      |             |
JPanel1              JPanel2                JPanel3       JPanel4
   |                    |                      |             |
JButtons--JTable1   JTextFields--JButton     JTable2    JDialog--JTable3
             i!          i!                    i!                  i!
           Model1      Model2                Model3              Model4
             |            |                     |                   |
             +------------+-----------+---------+-------------------+
                                      |
                               DataAccessObject

La aplicación tiene varias vistas, algunas contiene una JTable para mostrar los datos, y algunas contienen un cuadro de diálogo con una forma para la edición o la adición de datos.

Tengo un DataAccessObject con JDBC-conexión. Yo uso varios modelos (se extiende AbstractTableModel) para conectar los puntos de vista (formularios o tablas) con el DAO.

En mi primera versión que implementa la DAO como Singleton, entonces supe que este es un anti-patrón y se utiliza la inyección de dependencia en su lugar, así que básicamente inicializar la DAO primero y luego inyectarla al constructor de todos los modelos. Entonces inicializar el JFrame e inyectar una referencia a los modelos en el constructor en el agujero GUI-árbol.

Al pasar la referencia a los modelos a través del árbol de la GUI agujero siente muy torpe, pero sé que tengo un buen control de las dependencias. Pero ¿hay alguna mejor diseño que podría utilizar una base de datos centrada en aplicaciones Java Swing con muchos puntos de vista de los datos que necesita un modelo con una conexión a la base de datos?

¿Fue útil?

Solución

También me gustaría apoyar el comentario de Shakedown. Todo se trata de capas. Separar el código en capas / niveles.

Desde que hablabas de la inyección de dependencias sugeriría que echar un vistazo a la infraestructura de Spring Cliente enriquecido para tener una idea acerca de cómo las aplicaciones Swing bueno puede ser diseñado / desarrollado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top