Структура кода приложения Java - PullRequest
0 голосов
/ 29 октября 2010

Мое Java-приложение не очень большое, но я бы хотел сделать это "правильным образом". Ищете предложения, чтобы не делать большой беспорядок ...

Я использую Swing, среду приложений Swing и базу данных H2.

Это однокадровое приложение с разными вкладками. Большинство вкладок будут отражать некоторые аспекты данных в базе данных. Некоторые из них смогут это изменить. Некоторые вкладки будут иметь кнопки или действия, которые будут перенаправлять на другую вкладку ... вот и все.

Я бы хотел, чтобы все было чисто, достаточно переносимо и гибко (например, можно отключить некоторые вкладки или добавить несколько).

Вот вопросы:

1) Как обновлять вкладки при изменении содержимого базы данных? Реализовать какой-нибудь интерфейс Слушателя? Должен ли я определить этот интерфейс или что-то уже существует, что я могу использовать повторно?

2) Как "связать" разные вкладки вместе, чтобы было легко переходить с одной на другую (и, возможно, придется нести какой-то аргумент, чтобы настроить вкладку назначения справа "view")

3) Если я установлю некоторые предпочтения для некоторых фильтров в другой части приложения, как я могу поделиться такими настройками со всем приложением?

И когда я спрашиваю «как», я действительно имею в виду «как лучше» ... я могу заставить это работать уже ... просто ищу подходящий инструмент для использования, шаблон проектирования или тому подобное.

Ответы [ 3 ]

2 голосов
/ 29 октября 2010

Существуют разные стратегии построения приложений графического интерфейса. Здесь некоторая статья о.

1 голос
/ 29 октября 2010

При использовании Swing вы можете использовать панель с вкладками, чтобы иметь табличный макет.

Реализация слушателя (как вы планируете). Посмотрите на наблюдаемый интерфейс в Java.

Вы можете реализовать синглтон (например, класс PreferenceManager) для хранения предпочтения и доступа к нему через приложение для доступа к свойствам.

0 голосов
/ 30 октября 2010

Вы действительно хотите использовать push-модель, в которой сервер должен поддерживать соединение с каждым клиентом, а затем обновлять их все, когда что-то меняется? Это возможно с несколькими клиентами, но быстро становится проблематичным. Вероятно, лучше использовать модель извлечения, когда клиент вручную (периодически?) Запрашивает обновления. Это также хороший способ использовать оптимистическую блокировку с полем last_modified в БД. Попытайтесь выполнить обновление, если оно изменилось с момента последней перезагрузки, предупредите пользователя и разрешите ему перезаписать / объединить.

Что касается Swing в целом, лучшая практика заключается в выделении всего, что не связано с GUI, в базовые классы («бизнес-логика»), которые запускают события. Зарегистрируйте все свои классы Swing в качестве соответствующего прослушивателя событий и обновите графический интерфейс соответствующим образом (SwingUtilities.invokeLater () здесь ваш друг).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...