4

我一直在编写一个以数据库为中心的 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,有些包含带有用于编辑或添加数据的表单的对话框。

我有一个DataAccessObjectJDBC 连接。我使用几个模型(扩展AbstractTableModel)将视图(表单或表格)与 DAO 连接起来。

在我的第一个版本中,我将 DAO 实现为 Singleton,然后我了解到这是一种反模式并改用依赖注入,所以我基本上先初始化 DAO,然后将其注入所有模型的构造函数。然后我初始化 JFrame 并在洞 GUI-tree 的构造函数中注入对模型的引用。

通过hole GUI树传递模型的引用感觉很笨拙,但我知道我对依赖关系有很好的控制。但是,对于以数据库为中心的 Java Swing 应用程序,我是否可以使用更好的设计,该应用程序具有许多需要与数据库连接的模型的数据视图?

4

1 回答 1

1

我也会支持 Shakedown 的评论。这都是关于层的。将您的代码分成层/层。

由于您在谈论依赖注入,我建议您看一下 Spring Rich Client 框架,以了解如何设计/开发好的 Swing 应用程序。

于 2010-09-09T12:54:29.810 回答