Pular para o conteúdo principal

Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — CESGRANRIO 2024

Arquitetura de SoftwarePadrões de projeto (Design Patterns)
Código
cg022819
Banca
CESGRANRIO
Órgão
UNEMAT
Ano
2024
Nível
Superior
Cargo
Analista de Sistemas
A equipe de sistemas de uma empresa recebeu uma demanda para incluir, em um sistema, um tratamento que permita observar se um determinado conjunto de dados está sendo atualizado. Caso haja alguma atualização, um conjunto de assinantes que desejem ser informados sobre alguma mudança nesses dados deverá ser notificado.Para atender à demanda descrita, qual padrão de projeto pode ser usado?
  1. AMemento
  2. BObserver
  3. CStrategy
  4. DAbstract Factory
  5. ETemplate Method
Revelar gabarito e comentário

GabaritoB — 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ão Observer (Observador)

Gabarito: letra B. A demanda descreve um cenário em que um sujeito (conjunto de dados) mantém uma lista de dependentes (assinantes) e os notifica automaticamente quando seu estado muda — este é exatamente o propósito do padrão Observer, um padrão comportamental do catálogo GoF.

O padrão Observer define uma dependência um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados. É a solução clássica para o problema de monitoramento e notificação de mudanças.

Padrão

Categoria

Propósito

Aplica-se à demanda?

Observer

Comportamental

Notificar automaticamente uma lista de dependentes sobre mudanças de estado em um sujeito

✅ Sim

Memento

Comportamental

Capturar e restaurar o estado interno de um objeto sem violar encapsulamento

❌ Não

Strategy

Comportamental

Definir uma família de algoritmos intercambiáveis

❌ Não

Abstract Factory

Criacional

Criar famílias de objetos relacionados sem especificar classes concretas

❌ Não

Template Method

Comportamental

Definir o esqueleto de um algoritmo, postergando passos para subclasses

❌ Não

  1. 1Sujeito muda estado
  2. 2Percorre lista de assinantes
  3. 3Chama método de atualização
  4. 4Assinante reage à mudança
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Memento captura e externaliza o estado interno de um objeto sem violar o encapsulamento, permitindo que o objeto seja restaurado a esse estado posteriormente. Não se aplica à notificação de assinantes.

Alternativa B — ✅ Correta ⟵ GABARITO

Observer atende exatamente a demanda: um objeto (sujeito) mantém uma lista de observadores (assinantes) e os notifica sobre mudanças de estado.

Alternativa C — ❌ Incorreta

Strategy define uma família de algoritmos intercambiáveis, permitindo que o algoritmo varie independentemente dos clientes. Não está relacionado a notificação de mudanças.

Alternativa D — ❌ Incorreta

Abstract Factory é um padrão criacional que fornece uma interface para criar famílias de objetos relacionados sem especificar classes concretas. Não se aplica.

Alternativa E — ❌ Incorreta

Template Method define o esqueleto de um algoritmo em uma operação, postergando passos para subclasses. Não lida com notificação de dependentes.

PEGA ESSA DICA!

Para identificar o padrão Observer, procure por palavras-chave como "notificar", "assinantes", "observar", "atualização automática" e "dependência um-para-muitos". Em provas, o Observer é o padrão mais associado a eventos e listeners.

Gabarito: letra B.

Link permanente: /questoes/cg022819