2010-09-08 61 views
4

我一直在寫一個以數據庫爲中心的Java Swing應用程序。如何設計以數據庫爲中心的Java Swing應用程序?

的GUI和DAO代碼在一棵大樹結束,如:

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

應用程序有一些看法,一些包含一個JTable用於顯示數據,以及一些包含用於編輯或形式的對話添加數據。

我有一個DataAccessObject與JDBC連接。我使用多個模型(擴展AbstractTableModel)將視圖(表單或表格)與DAO連接起來。

在我的第一個版本中,我將DAO實現爲一個Singleton,然後我得知這是一個反模式,並且使用了依賴注入,所以我基本上初始化DAO,然後將其注入到所有模型的構造函數中。然後,我初始化JFrame並在孔GUI樹中的構造函數中注入對模型的引用。

通過洞GUI樹傳遞參考模型感覺非常笨拙,但我知道我有很好的控制依賴關係。但是,有沒有更好的設計可以用於以數據庫爲中心的Java Swing應用程序,以及需要與數據庫連接的模型的許多數據視圖?

+6

您將需要將您的視圖與數據分開。事實上,我建議您忘記GUI,改爲建立一個管理數據庫並提供您所需的服務和功能的系統。一旦你有了,你可以使用Swing來構建一個GUI,它現在將使用你的新系統。這一切都是關於抽象層的...... – 2010-09-08 22:56:49

+2

確實如此.... + 1從我身上。 – duffymo 2010-09-08 23:04:34

+0

@Shakedown:這不就是我用我的設計所做的,只有訪問DAO的模型?或者你有什麼意思? – Jonas 2010-09-09 13:36:31

回答

1

我也會支持Shakedown的評論。這完全是關於圖層的。將你的代碼分成多個層/層。

既然你在談論依賴注入,我建議你看一下Spring Rich Client框架,以瞭解如何設計/開發Swing應用程序。