Как следует разрабатывать ориентированное на базы данных приложение Java Swing? - PullRequest
4 голосов
/ 09 сентября 2010

Я уже некоторое время пишу ориентированное на базу данных приложение 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, ориентированных на базы данных, с множеством представлений данных, для которых требуется модель с подключением к базе данных?

1 Ответ

1 голос
/ 09 сентября 2010

Я бы также поддержал комментарий Shakedown.Это все о слоях.Разделите ваш код на слои / уровни.

Поскольку вы говорили о Dependency Injection, я бы посоветовал вам взглянуть на среду Spring Rich Client, чтобы понять, как можно разрабатывать / разрабатывать хорошие приложения Swing.1003 *

...