Frage

Ich habe eine Zeit lang eine Datenbank-zentriert Java Swing-Anwendung zu schreiben.

Die GUI und DAO-Code endet in einem großen Baum wie:

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

Die Anwendung mehr Ansichten hat, einige eine JTable enthalten Daten für die Ansicht, und einige enthalten einen Dialog mit einer Form zum Bearbeiten oder Hinzufügen von Daten.

habe ich einen DataAccessObject mit JDBC-Verbindung. Ich benutze mehrere Modelle (erweitert AbstractTableModel) die Ansichten (Formulare oder Tabellen) mit dem DAO zu verbinden.

In meiner ersten Version implementiert ich die DAO als Singleton, dann habe ich gelernt, dass dies ein anti-Muster und verwenden stattdessen Dependency Injection, so dass ich die DAO im Grunde initialisieren und dann spritzen sie an den Konstruktor aller Modelle. Dann initialisieren ich die JFrame und einen Verweis auf die Modelle im Konstruktor in dem Loch GUI-Baum injizieren.

Vorbei an der Bezugnahme auf die Modelle durch das Loch GUI Baum fühlt sich sehr ungeschickt, aber ich weiß, dass ich eine gute Kontrolle der Abhängigkeiten. Aber gibt es ein besseres entwerfe ich für eine Datenbank-zentriert Java Swing-Anwendungen mit vielen Ansichten von Daten, die ein Modell mit einer Verbindung zur Datenbank benötigen verwenden könnte?

War es hilfreich?

Lösung

Ich würde auch Shakedown Kommentar unterstützen. Es geht um Schichten. Trennen Sie Ihren Code in Schichten / Ebenen.

Da Sie über Dependency Injection sprachen würde ich Ihnen vorschlagen, einen Blick auf Spring Rich Client-Framework nehmen ein Gefühl darüber, wie gut Swing-Anwendungen zu bekommen entworfen / entwickelt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top