应该如何设计以数据库为中心的Java Swing应用程序?

时间:2010-09-08 21:20:43

标签: java swing architecture database-driven

我一直在编写以数据库为中心的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应用程序,其中有许多数据视图需要一个与数据库连接的模型?

1 个答案:

答案 0 :(得分:1)

我也会支持Shakedown的评论。这完全是关于层次的。将代码分成多个层/层。

由于您正在讨论依赖注入,我建议您查看Spring Rich Client框架,以了解可以如何设计/开发优秀的Swing应用程序。