Как следует разрабатывать ориентированное на базы данных приложение 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.

Другие вопросы по тегам