Domanda

Ho scritto un'applicazione Java Swing di database-centric per un po '.

L'interfaccia grafica e DAO-code finisce in un grande albero come:

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

L'applicazione ha diversi punti di vista, un po 'contiene una JTable per mostrare i dati, e alcuni contengono una finestra di dialogo con un modulo per la modifica o l'aggiunta di dati.

Ho un DataAccessObject con JDBC-collegamento. Io uso diversi modelli (si estende AbstractTableModel) per collegare i punti di vista (moduli o tabelle) con il DAO.

Nella mia prima versione che ha implementato il DAO come Singleton, poi ho imparato che questo è un anti-modello e utilizzato Dependency Injection, invece, così ho praticamente inizializzare il DAO e poi iniettare al costruttore di tutti i modelli. Poi ho inizializzare il JFrame e iniettare un riferimento ai modelli nel costruttore nel foro GUI-albero.

Passando il riferimento ai modelli attraverso l'albero buco GUI si sente molto goffo, ma so che ho un buon controllo delle dipendenze. Ma c'è di meglio progettare ho potuto utilizzare per un database-centric applicazioni Java Swing con molti punti di vista di dati che ha bisogno di un modello con una connessione al database?

È stato utile?

Soluzione

Vorrei anche sostenere il commento di Shakedown. Si tratta solo di strati. Separare il codice in strati / livelli.

Dal momento che stavi parlando Dependency Injection vorrei suggerire di dare un'occhiata al framework Spring Rich Client per avere un'idea di quanto è buono applicazioni Swing può essere progettato / sviluppato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top