我一直在编写以数据库为中心的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应用程序,其中有许多数据视图需要一个与数据库连接的模型?
答案 0 :(得分:1)
我也会支持Shakedown的评论。这完全是关于层次的。将代码分成多个层/层。
由于您正在讨论依赖注入,我建议您查看Spring Rich Client框架,以了解可以如何设计/开发优秀的Swing应用程序。