Шаблоны разработки для сокращения связи в приложении Swing

Эй все, я в настоящее время работаю над Java приложение Swing, и я искал некоторое руководство. Приложение является довольно небольшим, но я замечаю, что, поскольку кодовая база растет, что у меня есть очень большая связь в моем графе объектов. Я относительно плохо знаком с Swing, но я программировал достаточно долго для знания, куда это направляется.

Самая большая проблема, которую я имею, настраивает мою обработку событий. Как мои дочерние окна и объекты должны передавать события к моим объектам более высокого уровня, не имея ссылок на них? Я сделал изрядное количество веб-кодирования MVC. Этот шаблон предоставляет себя хорошо Swing? Я должен создавать свой собственный контроллер? Я предполагаю, что просто ищу шаблоны, что люди нашли полезную работу с Swing.

Заранее спасибо за Вашу справку.

7
задан BillMan 28 July 2010 в 03:10
поделиться

6 ответов

Лучший способ уменьшить взаимосвязь в графическом интерфейсе, Думаю, стоит использовать шину событий. Существует несколько существующих реализаций, в том числе некоторые, специально поддерживающие Swing.

Просто погуглите автобус событий качания , и вы найдете.

Если вы используете Guice в своем графическом интерфейсе, вы также можете взглянуть на guts-events .

5
ответ дан 7 December 2019 в 05:16
поделиться

Другой шаблон, который может вас заинтересовать, - это MVP (модель View Presenter) -Шаблон. Это отлично подходит для более свободного связывания видов с моделью. Хорошее объяснение Тодда Снайдера можно найти здесь .

1
ответ дан 7 December 2019 в 05:16
поделиться

Как вы уже сказали, вы собираетесь использовать MVC или, возможно, вы уже используете. После того, как вы разделили данные (я называю это уровнем модели данных). Теперь вам нужно применить шаблон OBSERVER к этим классам модели данных. Все представления (ваши компоненты пользовательского интерфейса), использующие эту модель данных, наблюдают за объектами этой модели на предмет любых изменений (через шаблон наблюдателя).

Надеюсь, это то, что вы ищете.

0
ответ дан 7 December 2019 в 05:16
поделиться

MVC !!! Тогда вы можете использовать также вариант наблюдателя под названием Publish/Subscribe, чтобы реализовать поток событий внутри вашего приложения.

0
ответ дан 7 December 2019 в 05:16
поделиться

Я не согласен с теми, кто предлагает использовать Event bus, потому что

  • из-за кода типа EventBus.subscribe(SymbolListChangeEvent.class, this); весь ваш код будет зависеть от одного экземпляра event bus, что делает его очень трудным для тестирования,
  • трудно найти, где используется конкретное событие.

Вместо этого я предлагаю использовать интерфейсы для инкапсуляции внешних зависимостей модуля. Если хотите, вы можете использовать их с паттерном слушателя, но в целом вы вольны рефакторить все, если хотите.

0
ответ дан 7 December 2019 в 05:16
поделиться

Да. MVC - это то, что вы должны использовать. Вот очень хорошая статья о MVC и Swing:

http://java.sun.com/products/jfc/tsc/articles/architecture/

2
ответ дан 7 December 2019 в 05:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: