Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — FGV 2023
Arquitetura de Software›Padrões de projeto (Design Patterns)
Código
fg073215
Banca
FGV
Órgão
TJ-SE
Ano
2023
Nível
Médio
Cargo
Técnico Judiciário - Especialidade - Programação de Sistemas
Paulo implementou um sistema na plataforma Java EE, onde foi adotada a arquitetura MVC, colocando Servlets e JSPs na camada View, entidades JPA na Model e Session Beans na Controller.Como os Session Beans são os únicos componentes que instanciam gestores de persistência do JPA, Paulo segue o padrão de desenvolvimento:
ADecorator;
BFacade;
CTemplate Method;
DAbstract Factory;
EState.
Revelar gabarito e comentário▾
GabaritoB — Facade;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Padrão de projeto Facade em Java EE
Gabarito: letra B. O uso de Session Beans como única camada que instancia os gestores de persistência JPA caracteriza o padrão Facade (Fachada), que oferece uma interface simplificada para um subsistema complexo, ocultando sua complexidade do cliente.
A banca testa o conhecimento dos padrões GoF, especialmente o Facade, que é muito comum em arquiteturas MVC para encapsular a lógica de persistência.
Padrão (Alternativa)
Categoria GoF
Função Principal
Aplicação no Cenário
Correta?
Facade (B)
Estrutural
Fornecer interface simplificada para um subsistema complexo
Session Beans encapsulam a complexidade da persistência JPA, sendo o único ponto de instanciação dos gestores
✅
Decorator (A)
Estrutural
Adicionar responsabilidades a um objeto dinamicamente
Não há adição dinâmica de funcionalidades aos objetos de persistência
❌
Template Method (C)
Comportamental
Definir esqueleto de algoritmo, permitindo que subclasses redefinam passos
Não há herança ou variação de algoritmo na criação dos gestores
❌
Abstract Factory (D)
Criacional
Criar famílias de objetos relacionados sem especificar classes concretas
Session Beans não criam famílias de objetos; apenas centralizam o acesso
❌
State (E)
Comportamental
Alterar comportamento de um objeto conforme seu estado interno
Não há mudança de estado comportamental nos Session Beans
❌
Alternativa A — ❌ Incorreta
O Decorator é um padrão estrutural que adiciona responsabilidades a um objeto dinamicamente, sem alterar sua interface. No cenário, não há adição de funcionalidades a objetos de persistência; há um encapsulamento de toda a lógica de acesso a dados em um ponto central (Session Bean). Portanto, não se aplica.
Alternativa B — ✅ Correta ⟵ GABARITO
O Facade (Fachada) é um padrão estrutural que fornece uma interface unificada para um conjunto de interfaces em um subsistema. No caso, os Session Beans atuam como fachada para o subsistema de persistência JPA: eles são os únicos que instanciam os gestores de persistência, simplificando o acesso para as outras camadas (View e Model). Isso está alinhado com a descrição do padrão: "Fornecer uma interface simplificada para um subsistema complexo" (GoF).
Alternativa C — ❌ Incorreta
O Template Method é um padrão comportamental que define o esqueleto de um algoritmo em um método, deixando subclasses redefinirem passos específicos. Não há herança ou variação de algoritmo no cenário; apenas centralização da criação dos gestores de persistência.
Alternativa D — ❌ Incorreta
O Abstract Factory é um padrão criacional que fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. No caso, os Session Beans não estão criando famílias de objetos; eles estão fornecendo um ponto único de acesso à persistência, o que é característica do Facade.
Alternativa E — ❌ Incorreta
O State é um padrão comportamental que permite que um objeto altere seu comportamento quando seu estado interno muda. Não há mudança de estado comportamental nos Session Beans; eles agem como controladores e fachada para persistência.
PEGA ESSA DICA!
O padrão Facade é frequentemente usado em arquiteturas MVC na camada Controller para encapsular a complexidade do modelo (persistência, regras de negócio). Em Java EE, os Session Beans (especialmente Stateless) são implementações clássicas de Facade. Lembre-se: Facade simplifica o acesso, enquanto outros padrões como Decorator, Template Method ou State têm propósitos diferentes.