Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — FGV 2023
Arquitetura de Software›Padrões de projeto (Design Patterns)
Código
fg072568
Banca
FGV
Órgão
TJ-SE
Ano
2023
Nível
Superior
Cargo
Analista Judiciário - Especialidade - Análise de Sistemas
A analista Maria está desenvolvendo a funcionalidade C de uma aplicação, utilizando os padrões de projeto Gang of Four (GoF). Existem vários algoritmos, conhecidos e disponíveis, capazes de implementar a funcionalidade C. A aplicação deve deixar o usuário escolher qual algoritmo usar. Sendo assim, Maria decidiu aplicar na funcionalidade C o padrão GoF comportamental que modela algoritmos similares como objetos independentes, porém, passíveis de troca em tempo de execução.Maria decidiu aplicar o padrão GoF:
AVisitor;
BStrategy;
CMediator;
DInterpreter;
ETemplate Method.
Revelar gabarito e comentário▾
GabaritoB — Strategy;
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 (Design Patterns) – Strategy
Gabarito: letra B. O enunciado descreve exatamente o padrão Strategy: ele modela algoritmos similares como objetos independentes, que podem ser trocados em tempo de execução pelo usuário. Esse padrão é classificado como comportamental pelo catálogo GoF.
Padrão GoF
Classificação
Propósito principal
Permite troca de algoritmos em tempo de execução?
Relação com o enunciado
Strategy
Comportamental
Definir uma família de algoritmos, encapsulá-los e torná-los intercambiáveis
Sim
✅ Gabarito – Exatamente o que Maria precisa
Visitor
Comportamental
Separar um algoritmo da estrutura de objetos sobre a qual opera
Não
❌ Foca em adicionar operações, não em trocar algoritmos
Mediator
Comportamental
Encapsular a interação entre objetos, reduzindo acoplamento
Não
❌ Não se aplica à seleção de algoritmos
Interpreter
Comportamental
Definir uma gramática e um interpretador para sentenças de uma linguagem
Não
❌ Não é usado para intercâmbio de algoritmos
Template Method
Comportamental
Definir o esqueleto de um algoritmo, postergando passos para subclasses
Não (troca por herança em tempo de compilação)
❌ Não permite troca em tempo de execução pelo usuário
Padrões GoF comportamentais
1Algoritmos como objetos independentes
Strategy (troca em execução)
Template Method (troca por herança)
2Outros propósitos
Visitor (operações em estruturas)
Mediator (interação entre objetos)
Interpreter (gramática de linguagem)
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Visitor é um padrão comportamental que permite separar um algoritmo da estrutura de objetos sobre a qual opera, mas não tem como objetivo permitir a troca de algoritmos em tempo de execução pelo usuário. O Visitor adiciona novas operações a classes sem modificá-las.
Alternativa B — ✅ Correta ⟵ GABARITO
O Strategy define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis. A aplicação delega a escolha do algoritmo ao cliente, que pode alterá-lo dinamicamente. Exatamente o que Maria precisa.
Alternativa C — ❌ Incorreta
Mediator é um padrão comportamental que define um objeto que encapsula a interação entre um conjunto de objetos, promovendo baixo acoplamento. Não se aplica à seleção de algoritmos.
Alternativa D — ❌ Incorreta
Interpreter é um padrão comportamental que define uma representação para a gramática de uma linguagem e um interpretador para sentenças dessa linguagem. Não é usado para intercâmbio de algoritmos.
Alternativa E — ❌ Incorreta
Template Method é um padrão comportamental que define o esqueleto de um algoritmo em um método, postergando a definição de alguns passos para subclasses. Embora envolva algoritmos, a troca não é feita em tempo de execução pelo usuário, mas sim por herança em tempo de compilação.