Sapien IA
Computação Múltipla Escolha

Você está desenvolvendo um módulo correspondente a uma classe X que possui um ciclo de vida composto por estados e não quer escrever o código dessa classe utilizando estruturas condicionais complexas. Para isso, você separa o processamento de cada parte desse ciclo de vida em uma classe à parte. A classe X apenas guarda uma referência para a situação corrente do processamento e repassa as requisições para o objeto correspondente a essa situação corrente. Assinale o padrão a que esse texto se refere:

Você está desenvolvendo um módulo correspondente a uma classe X que possui um ciclo de vida composto por estados e não quer escrever o código dessa classe utilizando estruturas condicionais complexas. Para isso, você separa o processamento de cada parte desse ciclo de vida em uma classe à parte. A classe X apenas guarda uma referência para a situação corrente do processamento e repassa as requisições para o objeto correspondente a essa situação corrente. Assinale o padrão a que esse texto se refere:

  1. Command
  2. State
  3. Mediator
  4. Memento
  5. Chain of Responsibility

Resolução completa

Explicação passo a passo

B
Alternativa B

Alternativa B - State

O texto descreve um cenário clássico onde um objeto precisa alterar seu comportamento dinamicamente dependendo do seu estado interno. O padrão de projeto identificado é o State (Estado).

Análise Detalhada

O enunciado apresenta três características fundamentais que apontam diretamente para este padrão:

  1. Ciclo de vida por estados: A classe possui comportamentos diferentes baseados na sua situação atual.
  2. Evitar condicionais complexos: O objetivo é eliminar grandes blocos if-else ou switch que verificam o estado atual para decidir a ação.
  3. Delegação: A classe principal (Contexto) mantém apenas uma referência ao objeto de estado e delega as requisições para ele.

No padrão State:

  • O comportamento específico de cada estado é encapsulado em classes separadas.
  • O objeto principal muda de comportamento sem precisar saber qual classe específica está sendo usada internamente.
  • Facilita a manutenção, pois adicionar um novo estado não exige modificar a lógica da classe principal.

Comparação com as Alternativas

Para entender melhor, veja como as outras opções se diferenciam:

PadrãoFunção PrincipalPor que não se aplica aqui?
CommandEncapsula uma solicitação como um objeto.Foca em executar ações, não em gerenciar estados de ciclo de vida.
StateAltera comportamento quando o estado interno muda.Correto. Combina perfeitamente com a descrição do problema.
MediatorCentraliza a comunicação entre objetos.Foca em reduzir acoplamento entre múltiplos objetos, não em estados de um único objeto.
MementoSalva e restaura o estado interno de um objeto.Serve para "snapshots" (pontos de salvamento), não para mudança de comportamento.
Chain of ResponsibilityPassa uma requisição ao longo de uma cadeia.Envolve múltiplos manipuladores decidindo quem processa, não estados internos de um objeto.

Conclusão

A estratégia de separar o processamento de cada parte do ciclo de vida em classes distintas e delegar a decisão para o objeto correspondente é a definição exata do padrão State. Portanto, a alternativa correta é a B.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Computação

Ver mais Computação resolvidas

Tem outra questão de Computação?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.