我已经写了一段时间以数据库为中心的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应用程序中,是否有更好的设计可用?