Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — CESGRANRIO 2024
Arquitetura de Software›Padrõ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?
AMemento
BObserver
CStrategy
DAbstract Factory
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
1Sujeito muda estado
2Percorre lista de assinantes
3Chama método de atualização
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.