Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — NC-UFPR 2024
Arquitetura de Software›Padrões de projeto (Design Patterns)
Código
qg331043
Banca
NC-UFPR
Órgão
UFPR
Ano
2024
Nível
Superior
Cargo
NC - - Analista de Tecnologia da Informação
Qual é o padrão de projeto comportamental conhecido por encapsular uma solicitação como um objeto, de modo a permitir parametrizar clientes com diferentes solicitações, enfileirar ou fazer o registro (log) de solicitações e suportar operações que podem ser desfeitas?
ACommand
BChain of Responsability
CInterpreter
DComposite
EVisitor
Revelar gabarito e comentário▾
GabaritoA — Command
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 Command (Comportamental)
Gabarito: letra A. O padrão Command encapsula uma solicitação como um objeto, permitindo parametrizar clientes com diferentes solicitações, enfileirar ou registrar (log) solicitações e suportar operações reversíveis (undo/redo). Exatamente a descrição do enunciado.
O livro clássico "Design Patterns: Elements of Reusable Object-Oriented Software" (GoF) define o Command como um padrão comportamental que converte uma requisição em um objeto independente, contendo toda a informação necessária para a execução futura ou desfazer da ação.
Padrões Comportamentais (GoF): Command (Encapsula solicitação como objeto, Parametriza clientes, Enfileira / registra (log), Suporta undo/redo); Chain of Responsibility (Cadeia de handlers, Um trata a solicitação); Interpreter (Gramática + interpretador); Visitor (Opera sem modificar classes)
Alternativa A — ✅ Correta ⟵ GABARITO
Command: encapsula uma solicitação como um objeto. Isso permite parametrizar clientes com diferentes solicitações, enfileirar ou registrar solicitações e suportar operações que podem ser desfeitas. Exemplos: botões de interface, transações, macros.
Alternativa B — ❌ Incorreta
Chain of Responsibility: passa a solicitação ao longo de uma cadeia de handlers até que um deles a trate. Não encapsula a solicitação como um objeto nem suporta desfazer.
Alternativa C — ❌ Incorreta
Interpreter: define uma representação para uma gramática e um interpretador que a avalia. Não tem relação com encapsular solicitações ou enfileiramento.
Alternativa D — ❌ Incorreta
Composite: compõe objetos em estruturas de árvore para representar hierarquias parte-todo. Não é comportamental (é estrutural) e não trata de solicitações.
Alternativa E — ❌ Incorreta
Visitor: permite adicionar operações a objetos sem modificar suas classes. Separar algoritmo da estrutura do objeto, não encapsular solicitações.
PEGA ESSA DICA!
Para memorizar os padrões comportamentais, associe Command a "comando" (uma ordem encapsulada), Chain of Responsibility a "cadeia de responsabilidade" (tentativa em sequência), Interpreter a "interpretar linguagem", Visitor a "visitante" (operação externa). O Command é o único que explicitamente suporta undo/redo.