João é programador do DPE/RS e precisa desenvolver o sistema DefensorNet com os seguintes requisitos técnicos: • Todas as requisições HTTP devem passar por um Servlet, onde o fluxo de execução é direcionado para o controlador EJB adequado, e os dados retornados no processamento efetuado pelo controlador são direcionados para algum template, onde ocorre a montagem da resposta, na forma de uma página HTML; e • O paradigma de programação é orientado a objetos, e as classes DAO são acessadas apenas ao nível dos controladores. Para desenvolver o DefensorNet, no nível do Servlet e dos EJBs, João deve utilizar, respectivamente, os padrões:
- A)Proxy e Observer;
Errada, porque Proxy e Observer não descrevem o papel do Servlet como ponto central de entrada nem dos EJBs como camada de simplificação do acesso às DAOs.
- B)Flyweight e Strategy;
Errada, porque Flyweight trata de compartilhamento eficiente de objetos e Strategy trata de variação de algoritmos, não de controle central de requisições nem de fachada.
- C)Template Method e Command;
Errada, porque Template Method e Command não correspondem ao papel de centralizar o fluxo HTTP e esconder a complexidade das DAOs atrás dos EJBs.
- D)Front Controller e Facade;
Certa, porque o Servlet funciona como Front Controller e os EJBs atuam como Facade, centralizando o fluxo e simplificando o acesso à camada de persistência.
- E)Builder e Adapter.
Errada, porque Builder e Adapter tratam, respectivamente, de construção de objetos e adaptação de interfaces, e não da arquitetura pedida no enunciado.
Gabarito: D
A questão mistura dois padrões clássicos de arquitetura de sistemas web. Quando toda requisição HTTP entra por um único ponto, que decide para onde encaminhar a execução e depois devolve a resposta para a página adequada, você está diante da ideia de centralizar o controle do fluxo. Isso é típico do padrão Front Controller, muito usado em frameworks web para evitar que cada requisição trate a navegação de forma espalhada e repetitiva. Já quando os EJBs funcionam como uma camada intermediária que esconde a complexidade das classes DAO e expõe uma interface mais simples para os controladores, o padrão lembrado é o Facade. Ele serve justamente para oferecer uma porta de entrada única para um conjunto de objetos mais internos, reduzindo o acoplamento e deixando o uso mais limpo. Então, no enunciado, o Servlet concentra a entrada das requisições e direciona o fluxo para o componente certo, o que caracteriza Front Controller. E os EJBs ficam como uma fachada sobre as DAOs, acessadas apenas pelos controladores, o que caracteriza Facade. Por isso o gabarito D está correto. Em termos doutrinários, essa combinação é bem cobrada em arquitetura MVC e em sistemas corporativos Java: o Front Controller organiza a entrada da aplicação, enquanto a Facade simplifica o acesso à lógica interna. A banca gosta de descrever o comportamento na prática e esperar que você reconheça o padrão pelo papel que cada componente desempenha.