Я выполняю рефакторинг существующего (Ajax) Java-веб-приложения, которое в настоящее время хранит большую часть своей логики непосредственно в сервлетах.(Сервлеты даже вызывают друг друга, используя несколько неприятных уловок ...)
Рефакторинг сам по себе болезнен, но довольно прост (рефакторинг всего, чтобы использовать Dependency Injection сейчас).
Моя проблема в том, что я действительно не могу придумать идеальную схему именования:
Реорганизованные сервлеты теперь содержат лишь минимальное количество логики (настолько, что они обрабатываютServletRequest и ServletResponse, отправляют код ошибки HTTP и т. Д.), Затем они называют то, что я в настоящее время называю Процессоры (хорошее / плохое имя?!?), Которые могут быть повторно использованы несколькими сервлетами, тестовыми классами, ... Процессоры выполняют логику, необходимую для действия, аналогично тому, что делал бы Session Bean, если бы мы использовали EJB.
Я никогда не думал, что Session Bean в любом случае будет хорошим именем.И я тоже не очень заинтересован в определении монолитного «Фасада».В первую очередь я ищу лучшее имя, чем «Процессор», или, может быть, есть идеи, как вы структурируете свой код обработки сервлета.
Пример
Это упрощенный пример(настоящее приложение использует GWT с Gilead, ... но это не так важно):
public class UserRegistrationServlet extends HttpServlet {
@Inject
UserRegistrationProcessor userRegistrationProcessor;
@Override
protected void doPost(final HttpServletRequest req,
final HttpServletResponse resp)
throws ServletException, IOException {
RegistrationRequest registrationRequest = parseRegistrationRequest(req);
RegistrationResult registrationResult =
userRegistrationProcessor.process(registrationRequest);
pw.print(toJson(registrationResult));
...
}
}
Как показывает пример, я предпочитаю иметь специализированные процессоры, которые отвечают только за одну задачу (или, может быть,несколько очень тесно связанных задач) - в отличие от большого класса, который выполняет множество различных действий.