Pular para o conteúdo principal

Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — Avança SP 2025

Arquitetura de SoftwarePadrõ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?
  1. AFactory Method
  2. BState Pattern
  3. CSingleton
  4. DObserver
  5. 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).

Gabarito: letra B

Link permanente: /questoes/qg425065