Как спроектировать приложение Java с базой данных Java?

StackOverflow https://stackoverflow.com/questions/3672002

Вопрос

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

Передача ссылки на модели через отверстие GUI чувствует себя очень неуклюжему, но я знаю, что у меня хороший контроль над зависимостями. Но есть ли лучший дизайн, который я мог бы использовать для базы данных, ориентированных на Java Swing Privents со многими взглядами на данные, которые нуждается в модели с подключением к базе данных?

Это было полезно?

Решение

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

Поскольку вы говорили о инъекции зависимостей, я бы предложил вам взглянуть на Wpen Whicle Client Clandure, чтобы почувствовать, как хорошие приложения для качания могут быть разработаны / разработаны.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top