Pular para o conteúdo principal

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

Arquitetura de SoftwarePadrões de projeto (Design Patterns)
Código
fg077366
Banca
FGV
Órgão
CVM
Ano
2024
Nível
Superior
Cargo
Analista - Perfil 8 - TI / Sistemas e Desenvolvimento - Tarde
Natália está desenvolvendo um sistema financeiro, no qual os documentos podem receber diferentes tipos de tratamento, e pretende tirar proveito dos padrões de desenvolvimento. Para tratar os documentos, ela criou diversos processos, que serão colocados em uma fila. Assim, o documento passa por um dado processo da fila, é tratado e enviado para o processo seguinte.Adotando essa estratégia, Natália usou o padrão de desenvolvimento denominado:
  1. AChain of Responsibility;
  2. BPrototype;
  3. CDecorator;
  4. DAbstract Factory;
  5. EFactory Method.
Revelar gabarito e comentário

GabaritoA — Chain of Responsibility;

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 Chain of Responsibility

Gabarito: letra A. O padrão Chain of Responsibility (Corrente de Responsabilidade) é um padrão comportamental do GoF que organiza uma cadeia de objetos (handlers) onde cada um decide se processa uma requisição ou a repassa ao próximo da cadeia. A descrição do enunciado — documentos passam por uma fila de processos, cada um trata e envia ao seguinte — é a aplicação clássica desse padrão. Abaixo, a análise de cada alternativa.

Chain of Responsibility
  • 1Tipo
    • Comportamental (GoF)
  • 2Estrutura
    • Cadeia de handlers
    • Cada handler decide
      • Processa a requisição
      • Ou repassa ao próximo
  • 3Cenário típico
    • Fila de processos
    • Documento passa por cada etapa
    • Cada etapa trata e envia ao seguinte
  • 4Confusão comum
    • Decorator (estrutural)
      • Todos se aplicam e acumulam
      • Não há decisão de passar adiante
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

O Chain of Responsibility exatamente modela uma sequência de objetos que podem processar uma requisição ou delegá-la ao próximo. É a solução ideal para o cenário de diferentes tratamentos em fila.

Alternativa B — ❌ Incorreta

Prototype é um padrão criacional que permite criar novos objetos por clonagem de um protótipo. Não se relaciona com cadeia de processamento.

Alternativa C — ❌ Incorreta

Decorator é um padrão estrutural que adiciona responsabilidades a um objeto dinamicamente, empilhando comportamentos. Apesar de também usar composição em cadeia, a intenção é diferente: no Decorator, todos os decoradores se aplicam ao objeto final (não há "decisão de passar adiante"). No Chain of Responsibility, a requisição percorre a cadeia até um handler que a trate.

Alternativa D — ❌ Incorreta

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

Alternativa E — ❌ Incorreta

Factory Method é um padrão criacional que define um método para criar objetos, permitindo que subclasses decidam qual classe instanciar. Também não se aplica ao problema.

NÃO CAIA NESSA!

A banca costuma confundir Chain of Responsibility com Decorator, pois ambos usam encadeamento. Mas a diferença crucial: no Decorator todos os elementos são aplicados e se acumulam; no Chain of Responsibility cada elemento decide se processa ou passa adiante (um único handler pode tratar). A descrição de "documento passa por um processo, é tratado e enviado ao seguinte" indica que cada etapa efetivamente processa algo, mas a ênfase está na passagem ao próximo — típico do Chain.

Gabarito: letra A.

Link permanente: /questoes/fg077366