GWT-платформа: куда должна идти бизнес-логика? - PullRequest
0 голосов
/ 27 сентября 2011

Я только что получил контроль над GWTP и MVP, GIN и Dispatch.

С диспетчеризацией есть класс Handler, который определяет, что действие делает, и возвращает что-то соответственно.

Пока чтоЯ оказался в случае, когда у меня есть 2 действия, которые требуют выполнения одного и того же метода.Я считаю, что ActionHandling - это не то место, куда идет логика бизнеса, а то, что он должен идти в слое за ним, что-то ему как-то передаётся

Как мне расположить мою логику?Позже я хотел бы использовать Hibernate.

РЕДАКТИРОВАТЬ:

в качестве примечания, применяя ответы, полученные на практике, что необходимо сделать:

1.- Создайте класс модуля, который расширяет AbstractModule, он содержит

bind(Service.class).to(ServiceImpl.class);

2.- на вашем GuiceServletcontextListener добавьте ваш serviceModule в метод getInjector, возвращайте:

return Guice.createInjector(new ServerModule(), new DispatchServletModule(), new ServiceModule());

3.- На вашем actionHandlersконструкторы имеют что-то вроде этого

@Inject
  TestHandler(Service service) { this.service=service }

Ответы [ 3 ]

2 голосов
/ 27 сентября 2011

Бизнес-логика должна быть в ваших бизнес-объектах, которые не зависят от ваших классов Handler. Постарайтесь создать свой бизнес-уровень технологически независимым способом. Обработчики делегируют всю значительную обработку бизнес-объектам, поэтому они (обработчики) должны быть довольно тонкими.

1 голос
/ 27 сентября 2011

Вы можете попытаться добавить сервисный уровень в обработчик. Сервис может быть создан как одиночный.

@Inject
public MyHandler(MyService service) {
  this.service = service;
}
0 голосов
/ 28 сентября 2011

Является ли MyService интерфейсом?Если да, то вы забыли связать его внутри Guice.

Персонально Я использую DAO, чтобы поместить свою логику между ActionHandlers и моей средой персистентности (Hybernate, Objectify, Twig-Persist и т. Д.)

...