Лучший способ для графического интерфейса Swing взаимодействовать с логикой домена?

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

  •  09-06-2019
  •  | 
  •  

Вопрос

У меня есть некоторая логика домена, реализованная в нескольких POJO.Я хочу написать пользовательский интерфейс Swing, позволяющий пользователю инициировать и видеть результаты различных действий домена.

Какой лучший шаблон / фреймворк / библиотека для взаимодействия между пользовательским интерфейсом и доменом?Это сводится к следующему:

  • пользовательский интерфейс, способный преобразовать жест пользователя в действие домена
  • домен, способный отправлять информацию о состоянии / результате обратно в пользовательский интерфейс для целей отображения

Я знаю о MVC как о широкой концепции и поработал с шаблоном Observer (чья реализация Java имеет некоторые недостатки, если я правильно понимаю), но мне интересно, существует ли принятая наилучшая практика для решения этой проблемы?

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

Решение

Определенно MVC - что-то вроде этого пример что явно разделяет ситуацию.Проблема с примерами Swing заключается в том, что они, кажется, показывают, что весь MVC работает в рамках swing, что мне не кажется правильным

Другие советы

MVC является фантастическим для отдельного виджета, однако он становится немного неуправляемым, когда у вас есть pages и forms с большим количеством виджетов.

Одна вещь, на которую, возможно, стоит обратить внимание (и я не одобряю это, я на самом деле не использовал это, просто реализовал что-то очень похожее для себя), это Структура привязки Beans (JSR295)

В прошлом я использовал шаблон Observer (используя AspectJ magic) с некоторые успех, но обнаружил, что, если вы не будете осторожны, он быстро превратится в скопление..эээ..флик?

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

Редактировать:

Чтобы немного расширить мой ответ, мы использовали СВТ, не Качается, так YMMV.В основном мы использовали AspectJ для подключения передачи данных из компонентов пользовательского интерфейса в объекты модели.Эти модельные объекты были глупыми POJO.

Фактическая бизнес-логика была выполнена путем "просмотра" объектов модели с помощью AspectJ и запуска требуемого события, если они изменились.Таким образом, если вы изменили значение в текстовом поле, AspectJ сработает и скопирует это значение в POJO.Если бы в этом поле в POJO было событие для бизнес-логики, это было бы тогда огонь.Если бы эта логика изменила какой-либо POJO (а это могло бы быть) AspectJ заметил бы и скопировал значение из POJO в компонент пользовательского интерфейса.

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