Я уже некоторое время пишу ориентированное на базу данных приложение 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, затем я узнал, что этоВместо этого я использовал Dependency Injection, поэтому сначала я инициализирую DAO, а затем внедряю его в конструктор всех моделей.Затем я инициализирую JFrame и вставляю ссылку на модели в конструкторе в дереве GUI отверстия.
Передача ссылки на модели через дерево GUI отверстия кажется очень неуклюжей, но я знаю, что у меня есть хорошийконтроль зависимостей.Но есть ли лучший дизайн, который я мог бы использовать для приложений Java Swing, ориентированных на базы данных, с множеством представлений данных, для которых требуется модель с подключением к базе данных?