Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — Avança SP 2025
Arquitetura de Software›Padrões de projeto (Design Patterns)
Código
qg425065
Banca
Avança SP
Órgão
UNITAU
Ano
2025
Nível
Superior
Cargo
Analista de Sistemas Sênior
Em um sistema web desenvolvido em Java, qual padrão de projeto (design pattern) é mais adequado para gerenciar diferentes estados de um pedido em um e-commerce?
AFactory Method
BState Pattern
CSingleton
DObserver
EStrategy
Revelar gabarito e comentário▾
GabaritoB — State Pattern
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: State Pattern
Gabarito: letra B (State Pattern). O padrão State é o mais adequado para gerenciar diferentes estados de um pedido em e-commerce, pois permite que um objeto altere seu comportamento quando seu estado interno muda, encapsulando cada estado em uma classe separada (conceito GoF).
A questão cobra o conhecimento sobre padrões de projeto comportamentais, especificamente o State Pattern. Vamos analisar cada alternativa.
Padrão de Projeto
Categoria
Propósito Principal
Adequado para Gerenciar Estados de Pedido?
Factory Method
Criacional
Delegar criação de objetos a subclasses
❌ Não
State Pattern
Comportamental
Alterar comportamento conforme estado interno do objeto
✅ Sim
Singleton
Criacional
Garantir uma única instância de uma classe
❌ Não
Observer
Comportamental
Notificar mudanças a múltiplos objetos dependentes
❌ Não (apenas notifica, não gerencia transições)
Strategy
Comportamental
Definir família de algoritmos intercambiáveis escolhidos pelo cliente
❌ Não (cliente escolhe; estado interno não dita a troca)
Padrões de projeto (GoF)
1Criacionais
Factory Method (criação delegada)
Singleton (instância única)
2Comportamentais
State (estados internos)
Novo
Processando
Enviado
Entregue
Observer (notificação 1:N)
Strategy (algoritmos intercambiáveis)
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta (Factory Method)
Factory Method é um padrão criacional, focado em delegar a criação de objetos para subclasses. Não resolve o problema de gerenciamento de estados de um pedido.
Alternativa B — ✅ Correta ⟵ GABARITO
State Pattern é a solução clássica para estados variáveis. No contexto de um pedido de e-commerce, ele modela cada estado (como "Novo", "Processando", "Enviado", "Entregue") como uma classe concreta que implementa uma interface comum. O objeto pedido delega o comportamento ao estado atual, facilitando a adição de novos estados sem modificar o contexto.
Alternativa C — ❌ Incorreta (Singleton)
Singleton é um padrão criacional que garante uma única instância de uma classe. Não tem relação com gerenciamento de estados.
Alternativa D — ❌ Incorreta (Observer)
Observer é um padrão comportamental que define uma dependência um-para-muitos para notificar mudanças. Embora possa ser usado para notificar a mudança de estado, ele não gerencia diretamente as transições e comportamentos associados a cada estado. O State Pattern é mais específico para esse fim.
Alternativa E — ❌ Incorreta (Strategy)
Strategy também é um padrão comportamental, mas sua finalidade é definir uma família de algoritmos intercambiáveis. State e Strategy têm estruturas semelhantes, mas a diferença principal é que no State o comportamento muda conforme o estado interno do objeto, enquanto no Strategy o cliente escolhe qual estratégia usar. Para gerenciar estados de um pedido, o State é o mais adequado pois encapsula as transições e ações específicas de cada estado.
NÃO CAIA NESSA!
Muitos candidatos confundem State com Strategy pela similaridade estrutural (ambos usam composição e delegação). A diferença-chave: no State, o próprio objeto altera seu estado e comportamento; no Strategy, o comportamento é escolhido externamente. Fique atento ao contexto: se o problema fala em "estados" (como status de pedido), o padrão é State.
Conclusão: O padrão correto para gerenciar estados de um pedido em e-commerce é o State Pattern (B).