Веб-приложение, которое я сейчас создаю, соответствует MVC. Я структурировал сервлеты таким образом, чтобы каждый из них обрабатывал связанные действия (поэтому один сервлет может отвечать за все действия, связанные с настройкой учетной записи пользователя, а другой может использоваться для переписки пользователя). В настоящее время у меня есть параметр «action», присоединенный ко всем строкам запроса (для GET) и телам запросов (для POSTS), и использую его для определения того, какое действие необходимо выполнить в этих сервлетах «связанных действий».
Другими словами, мой код структурирован примерно так:
protected void doGet(HttpServletRequest request, HttpServletResponse response)
{
String action = request.getParameter("action");
if(action.equals("login"))
{
.....
}
else if(action.equals("createAccount"))
{
....
}
else if(action.equals("changePassword"))
{
....
}
..........
}
Я относительно рано в процессе разработки, и на данный момент я не нахожу никаких проблем с обслуживаемостью, вытекающих из этого проекта. Согласно MVC, все сервлеты вызывают методы моих служебных классов; в них не выполняется никакой реальной работы, за исключением отправки ответов клиенту. Но просматривая SO, я сталкиваюсь с мнением, что даже операторы if-else среднего размера (~ 10 или меньше "elses") являются запахом кода и предполагают, что пользователь не делает "OOP-путь".
Есть ли лучший способ фильтровать типы запросов, поступающих на мои сервлеты? Я хотел бы иметь возможность улучшить поддержку моего приложения, но не желать реализовывать функции ООП только потому, что они ООП (подобно тому, как люди презирают пуристов, которые настаивают на жесткой инкапсуляции, до такой степени, что у них 24 однострочных). добытчики / Сеттера).