Pular para o conteúdo principal

Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — FGV 2023

Arquitetura de SoftwarePadrõ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:
  1. ADecorator;
  2. BFacade;
  3. CTemplate Method;
  4. DAbstract Factory;
  5. 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.

Gabarito: letra B

Link permanente: /questoes/fg073215