Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — FGV 2024
Arquitetura de Software›Padrõ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:
AChain of Responsibility;
BPrototype;
CDecorator;
DAbstract Factory;
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.