Как следует разрабатывать ориентированное на базы данных приложение Java Swing?
Некоторое время я писал Java-приложение, ориентированное на базы данных.
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, ориентированных на базу данных, с множеством представлений данных, которым требуется модель с подключением к базе данных?
1 ответ
Я также поддержал бы комментарий Shakedown. Это все о слоях. Разделите ваш код на слои / уровни.
Поскольку вы говорили о Dependency Injection, я бы посоветовал вам взглянуть на среду Spring Rich Client, чтобы понять, как можно разрабатывать / разрабатывать хорошие приложения Swing.