2012-01-08 4 views
15

Для проекта я работал над настольным приложением JavaFX 2.0 (пользовательский интерфейс keytool). Как работает JavaFx2.0 (в моем проекте так или иначе) обработка событий пользовательского интерфейса происходит в самих классах интерфейса JavaFX 2.0 (например: события onclicked() или прослушиватели изменений свойств).Как организовать контроллеры/презентаторы в большом приложении JavaFx 2.0?

Прямо сейчас я использую статический класс с помощью метода getController(), который все классы UI используют для доступа к одному контроллеру приложения (как-то мне было бесполезно передавать контроллер на все 50+ пользовательских интерфейсов).

Проблема в том, что один контроллер становится очень большим! У этого метода слишком много методов (все методы бизнес-логики, к которым должны обращаться мои классы пользовательского интерфейса). Несмотря на то, что он пропускает только методы, вызываемые моей моделью/службой, все еще существует множество исключений, которые необходимо поймать на уровне контроллера для обработки их в пользовательском интерфейсе (показать сообщения об ошибках и т. Д.).

Кто-нибудь знает, как сделать весь этот шаблон MVC/MVP лучше для моего приложения, если классы UI/Controller/Model напрямую не зависят от eachother? Может быть, другой контроллер для каждого варианта использования? Но тогда как я могу сделать так, чтобы правильный UI-класс получил правильный контроллер без непосредственного знания этого? Может быть, с помощью интерфейса?

+0

Это не ясно, что делает ваш контроллер. – toto2

+0

Возможно, ваш пользовательский интерфейс может разбиться на части, каждый из которых имеет свой собственный контроллер? – Tower

ответ

3

Я действительно не знаю Java FX, поэтому вы должны взять мой ответ с солью. Я немного поучался в обучающих программах Java FX, но все они кажутся крошечными примерами без какой-либо архитектуры ... MVC или другой.

Возможно, вы не должны слишком стараться иметь чистый шаблон MVC. Мне кажется, что каждый элемент пользовательского интерфейса сам является модулем MVC, например. Ярлык содержит текст (модель), его графическое представление (представление) и обрабатывает события (контроллер).

Возможно, вы просто делаете свою жизнь более болезненной, пытаясь иметь отдельный глобальный контроллер.

Возможно, вы сохраните отдельную модель, которая будет необходима, например, если вы показываете содержимое базы данных (модели). Однако, если вы делаете что-то очень простое, просто используйте состояние пользовательского интерфейса, поскольку вашей модели будет достаточно; хранение данных (модели) отдельно в программе просто заставило бы вас тратить время на синхронизацию данных в пользовательском интерфейсе и данных в отдельной модели. Дублирование данных является злым, и его следует избегать как можно больше.

1

Существует серия блогов здесь Building JEE applications in JavaFX 2.0, которые могут вам помочь. Он представляет несколько шаблонов с примером того, как разделить различные компоненты (MVP) в приложении JavaFx2.

2

Я предлагаю вам проверить JRebirth Framework

Он обеспечивает простой, но мощный шаблон, который поможет вам структурировать приложение.

Эти рамки молоды и будут улучшены в соответствии с полученной обратной связью. Не стесняйтесь присылать.

http://www.jrebirth.org/doc/Overview.html

Проверьте обзор страницы и исходный код, предоставленный, чтобы узнать больше.

Демо также доступны

+0

ссылка была удалена – James

+0

ссылка восстановлена ​​(была временно недоступна) –

+0

Ссылка сломана снова. – Derek

0

Я поставил базовый учебник по my website некоторое время назад о том, как MVC модель может быть реализована с использованием Java и JavaFX 2. Класс модели всегда развязаны и не должны ничего знать о контроллере и зрителе.Если это большой проект, я бы рекомендовал использовать модули, в которых у вас есть ваша модель, зритель и контроллер. Модуль может быть администратор портала или Google Map Viewer и т.д.

http://www.pergande.net/blog/article/post/Javafx+2.0+MVC/id/1

+2

Ссылка не работает – Andrew

Смежные вопросы