Melhor forma para direcionar requisições no Servlet Java Web

Eu criando um sistema de um Petshop em Java Web (somente a fins de estudo). Até o memento, estou usando a seguinte forma para redirecionar as requisições para os métodos dentro do Servlet:

String acao = request.getParameter("acao");
if ("cadastrarUsuario".equals(acao) {
    cadastrarUsuario();
else if ("deletarUsuario".equals(acao) {
    deletarUsuario();
} else {
    listarUsuarios();
}

Creio que dessa forma, se fosse o caso do Servlet ter muitos métodos (que no caso desse projeto, além desses métodos, tem mais 4 outros métodos), essa sequência de “if” poderia deixar a aplicação mais lenta. Tem algum outro método de fazer isso?

Mensurou quanto tempo leva cada um desses if?

Você poderia implementar o padrão de projeto Command, dessa forma cada ação seria implementada em uma classe distinta e você só usaria um mapa para obter o Command a partir do parâmetro recebido no Servlet.

Exemplo:

String parametro = request.getParameter("acao");
Command acao = acoes.get(parametro);
acao.execute();

No exemplo acima, Command seria uma interface que só tem um método execute() e acoes seria um Map<String, Command> com o mapeamento de cada parâmetro com sua respectiva implementação de Command.

2 curtidas