应该如何设计以数据库为中心的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,一些包含一个带有用于编辑或添加数据的表单的对话框。 我有一个带有JDBC连接的
DataAccessObject
。我使用几个模型(扩展
AbstractTableModel
)将视图(表单或表格)与DAO连接起来。 在我的第一个版本中,我将DAO实现为Singleton,然后我了解到这是一个反模式并使用了依赖注入,所以我基本上首先初始化DAO然后将其注入到所有模型的构造函数中。然后我初始化JFrame并在孔GUI树中的构造函数中注入模型的引用。 通过孔GUI树传递对模型的引用感觉非常笨拙,但我知道我对依赖关系有很好的控制。但是有没有更好的设计我可以用于以数据库为中心的Java Swing应用程序,其中有许多数据视图需要与数据库连接的模型?     
已邀请:
我也支持Shakedown的评论。这完全是关于层次的。将代码分成多个层/层。 既然你在谈论依赖注入,我建议你看一下Spring Rich Client框架,以了解Swing应用程序的设计/开发有多好。     

要回复问题请先登录注册