Различают модель и контроллер в JSF - PullRequest
3 голосов
/ 14 августа 2011

Я хочу четко понять, как правильно разрабатывать приложения JSF. В нашем проекте модель и контроллер одного класса, представленные компонентом CDI. Я немного сбит с толку, хорошая ли это практика. Насколько я понимаю шаблон MVC, контроллер должен обрабатывать действия пользователя (такие как отправка формы), а модель должна содержать бизнес-логику и данные. Или это нормально, что они в одном классе?
Кроме того, должна ли каждая страница иметь свой отдельный контроллер / модель (т. Е. Считается ли это хорошей практикой)?

Ответы [ 2 ]

6 голосов
/ 14 августа 2011

Как правило, лучше иметь два уровня - один с управляемыми JSF-компонентами (может управляться с помощью CDI), а другой - с компонентами, не зависящими от веб-среды, в которой они используются.

Какдля «контроллера» - FacesServlet можно рассматривать как «фронт-контроллер» для всего приложения.

4 голосов
/ 15 августа 2011

Контроллеры JSF являются просто обработчиками пользовательского интерфейса, они не должны нести никакой бизнес-логики.Обычно есть еще больше слоев (я включаю здесь только слои, которые относятся к логике):

  1. Контроллер пользовательского интерфейса - который тесно связан с пользовательским интерфейсом и, следовательно, с технологией, которую вы используете для MVC
  2. Сервисный уровень - это фасадная точка входа в бизнес-логику, которая обычно также управляет транзакциями, а в некоторых случаях - преобразованием DTO / Entity, если это необходимо.Он ничего не знает о используемой вами технологии Web MVC.
  3. Бизнес-логика, которая подчиняется шаблону Доменной модели (иногда называемой Доменной службой).
...