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
fg073216
Banca
FGV
Órgão
TJ-SE
Ano
2023
Nível
Médio
Cargo
Técnico Judiciário - Especialidade - Programação de Sistemas
André está trabalhando em um sistema com atualização de dados de forma assíncrona, onde um gráfico e uma planilha precisam repercutir de forma automática qualquer alteração efetuada na fonte de dados.Para implementar a solução, André deve usar o padrão de desenvolvimento:
  1. AChain of Responsibility;
  2. BAdapter;
  3. CFactory Method;
  4. DObserver;
  5. EFront Controller.
Revelar gabarito e comentário

GabaritoD — Observer;

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ões de Projeto (Design Patterns)

Gabarito: letra D. O padrão Observer é a solução ideal para cenários em que um objeto (sujeito) precisa notificar automaticamente múltiplos dependentes (observadores) sobre mudanças em seu estado, sem que eles precisem ficar consultando a fonte. No caso descrito, a fonte de dados é o sujeito; o gráfico e a planilha são os observadores que devem refletir as alterações de forma automática e assíncrona. Esse é o propósito clássico do padrão comportamental Observer.

A questão testa a capacidade de associar um problema típico de design ao padrão GoF adequado. Vamos analisar por que cada alternativa não se aplica ou, no caso da correta, se encaixa perfeitamente.


Alternativa A — ❌ Incorreta

Chain of Responsibility é um padrão comportamental que permite passar uma solicitação ao longo de uma cadeia de handlers, onde cada um decide se processa ou encaminha a requisição. Não há relação com notificação automática de mudanças de estado; seu foco é desacoplar remetente e destinatário em uma sequência de tratamento.

Alternativa B — ❌ Incorreta

Adapter é um padrão estrutural que converte a interface de uma classe em outra interface esperada pelo cliente, permitindo que classes incompatíveis trabalhem juntas. Não trata de atualização automática de dependentes; apenas adapta interfaces.

Alternativa C — ❌ Incorreta

Factory Method é um padrão de criação que define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar. Não resolve o problema de notificação de mudanças; é usado para encapsular a lógica de criação de objetos.

Alternativa D — ✅ Correta ⟵ GABARITO

Observer (ou Publisher-Subscriber) é um padrão comportamental no qual um objeto (Subject) mantém uma lista de dependentes (Observers) e os notifica automaticamente quando seu estado muda. O problema apresentado — um gráfico e uma planilha que devem repercutir alterações na fonte de dados — é um caso de uso clássico desse padrão. A comunicação assíncrona também é compatível, pois o Subject pode disparar notificações sem esperar que os Observers terminem seu processamento.

Alternativa E — ❌ Incorreta

Front Controller é um padrão arquitetural (não do catálogo GoF comportamental) que concentra o tratamento de todas as requisições em um único controlador, centralizando lógicas como autenticação e roteamento. Não se aplica à notificação de mudanças de dados entre componentes internos.


Padrão

Categoria

Propósito

Relação com o problema

Chain of Responsibility

Comportamental

Passar requisição por uma cadeia

❌ Não notifica dependentes

Adapter

Estrutural

Adaptar interfaces

❌ Foco em compatibilidade

Factory Method

Criação

Criar objetos sem especificar classe concreta

❌ Não trata notificação

Observer

Comportamental

Notificar dependentes sobre mudanças

✅ Solução direta

Front Controller

Arquitetural

Centralizar requisições

❌ Não é notificação

Gabarito: letra D — Observer.

Link permanente: /questoes/fg073216