我一直在编写一个以数据库为中心的 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-tree 的构造函数中注入对模型的引用。
通过hole GUI树传递模型的引用感觉很笨拙,但我知道我对依赖关系有很好的控制。但是,对于以数据库为中心的 Java Swing 应用程序,我是否可以使用更好的设计,该应用程序具有许多需要与数据库连接的模型的数据视图?