У меня есть логика предметной области, реализованная в ряде POJO. Я хочу написать пользовательский интерфейс Swing, чтобы пользователь мог инициировать и видеть результаты различных действий в домене.
Какой лучший шаблон / фреймворк / библиотека для взаимодействия между пользовательским интерфейсом и доменом? Это сводится к следующему:
Я знаю MVC как широкую концепцию и возился с шаблоном Observer (чья реализация Java имеет некоторые недостатки, если я правильно понимаю), но мне интересно, есть ли общепринятые лучшие практики для этой проблемы?




Я использовал шаблон Observer (используя магию AspectJ) в прошлом с успехом немного, но обнаружил, что если вы не будете осторожны, он быстро превратится в кластер ... эээ ... щелчок?
Быстро стало трудно управлять и, самое главное, чрезвычайно сложно отлаживать.
Редактировать:
Чтобы немного расширить мой ответ, мы использовали SWT, а не Swing, поэтому YMMV. Мы в основном использовали AspectJ для передачи данных от компонентов пользовательского интерфейса объектам модели. Эти модельные объекты были тупыми POJO.
Фактическая бизнес-логика была реализована путем «наблюдения» за объектами модели с помощью AspectJ и запуска требуемого события, если они изменились. Поэтому, если вы изменили значение в текстовом поле, AspectJ сработает и скопирует это значение в POJO. Если бы это поле в POJO имело событие для бизнес-логики, сработало бы тогда. Если эта логика изменит какие-либо POJO (а это возможно), AspectJ заметит и скопирует значение из POJO в компонент пользовательского интерфейса.
Ага, моя плохая. Обновлен пост, чтобы отразить :)
@Andrew Swan: Я полагаю, вы имеете в виду, что бывший - это тупые хранилища данных, но последний действительно может быть богатым типом домена с полным диапазоном поведения / логики.
Определенно MVC - что-то вроде этого пример, который четко разделяет вещи. Проблема с примерами Swing заключается в том, что они, кажется, показывают, что MVC все работает в пределах Swing, что мне не кажется правильным.
Эта статья выглядит действительно хорошо написанной; Я проверю и посмотрю, как у меня дела.
MVC отлично подходит для отдельного виджета, однако он становится немного неуправляемым, когда у вас есть pages и forms с большим количеством виджетов.
Одна вещь, на которую, возможно, стоит обратить внимание (и я не одобряю ее, я фактически не использовал ее, просто реализовал что-то очень похожее для себя), это Платформа привязки компонентов Beans (JSR295)
Я думаю, вы путаете POJO (en.wikipedia.org/wiki/POJO) с JavaBeans. Последние представляют собой немые хранилища данных, но первые действительно могут быть богатыми типами доменов с полным диапазоном поведения / логики. «Обычный» бит POJO просто указывает на отсутствие зависимости от какой-либо конкретной структуры или технологии.