A maioria das aplicações web tem algumas funcionalidades (p...

Próximas questões
Com base no mesmo assunto
Q215390 Arquitetura de Software
A maioria das aplicações web tem algumas funcionalidades (por exemplo, segurança), que são aplicáveis a todas as requisições da aplicação. Para adicionar essa funcionalidade separadamente para cada requisição da aplicação seria demorado, propenso a erros e difícil de manter. Para resolver esse problema pode ser utilizado o design pattern
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta para a questão apresentada é a D - Intercepting Filter.

A questão trata de padrões de projeto, especificamente de como aplicar funcionalidades transversais a todas as requisições de uma aplicação web de maneira eficiente. Vamos analisar o tema e as alternativas.

Para entender corretamente, é importante saber que algumas funcionalidades, como segurança, logging, ou validação, são transversais e aplicáveis a várias partes de uma aplicação. Implementar essas funcionalidades individualmente para cada requisição seria inviável devido à complexidade, propensão a erros e dificuldade de manutenção.

Intercepting Filter é um padrão de projeto que permite a implementação dessas funcionalidades transversais de uma forma centralizada. Ele utiliza uma cadeia de filtros para pré-processar ou pós-processar as requisições e respostas, tornando o código mais modular e de fácil manutenção. Por isso, é a resposta correta.

Agora, vamos justificar porque as outras alternativas estão incorretas:

A - Application Service: Este padrão é usado para encapsular a lógica de negócios em serviços de aplicação, facilitando a reutilização e gestão de transações. Embora útil, ele não é adequado para implementar funcionalidades transversais para todas as requisições.

B - Front Controller: Este padrão centraliza a manipulação de todas as requisições em um único controlador. Apesar de ajudar na organização da navegação em uma aplicação web, ele não é especificamente voltado para aplicar funcionalidades transversais como segurança ou logging.

C - Regular Expression: Expressões regulares são usadas para correspondência de padrões em strings, como validação de dados. Elas não são um padrão de projeto e não são adequadas para aplicar funcionalidades transversais a requisições web.

E - Command: Este padrão encapsula uma solicitação como um objeto, permitindo parametrizar clientes com diferentes solicitações, enfileirar ou fazer registro de solicitações. Ele é mais adequado para ações que precisam ser executadas de maneira flexível, mas não para aplicar funcionalidades transversais a todas as requisições.

Espero que esta explicação tenha esclarecido suas dúvidas sobre a questão. Se precisar de mais alguma orientação ou tiver outras dúvidas, estou à disposição!

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

LETRA D.
O intercepting filter é um padrão utilizado para verificar a validade da solicitação que está sendo feita para uma requisição de página na web. Toda vez que um usuário abre um navegador Internet (browser) e digita um endereço, uma solicitação é gerada e entregue a um servidor na web, que por sua vez interpreta a solicitação e devolve uma resposta (página web).
Fonte: http://www.batebyte.pr.gov.br/modules/conteudo/conteudo.php?conteudo=1049
Eu entendo porque a resposta é intercepting filter.

Só não entendo porque não poderia ser Front Controller. Front Controler é um ponto de entrada centralizado para todas as requisições.
Dessa forma qualquer requisito "global" poderia ser colocado nele, correto?

Alguem poderia explicar?
Respondendo ao Bernardo.
 
Front controller serve para centralizar as requisicoes de forma "formal", influencia no fluxo de navegação ou workflow. 
 
O intercept filtering serve para relizar outras tarefas (filters fazendo logins, internacionalizações) que nao influenciem diretamente na requisicao original e ao destino original, sendo como uma espécie de filtro para requisicoes HTTP. 
 
Command = encapsula em um objeto um algoritmo que atua sobre o estado do sistema. Tb chamado de Action.

Desculpem a ignorância, mas... de quais padrões de projeto a questão está tratando? Conheço os padrões GoF e GRASP, quais outros existem e quais costumam cair em prova? Alguém poderia passar boas referências para estudo? Obrigada a quem puder ajudar.

@Tayse: talvez alguns sejam do Java. Nesse link há exemplos: http://www.oracle.com/technetwork/java/catalog-137601.html

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo