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
fg075817
Banca
FGV
Órgão
AL-TO
Ano
2024
Nível
Superior
Cargo
Analista Legislativo - Análise de Sistema
Assinale a opção que indica o padrão responsável pela criação de objetos de várias classes graças à especialização de sua classe principal.
AAbstract Factory.
BDecorator.
CStrategy.
DBuilder.
EAdapter.
Revelar gabarito e comentário▾
GabaritoA — Abstract Factory.
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 – Abstract Factory
Gabarito: letra A. O padrão Abstract Factory é um padrão criacional que fornece uma interface para criar famílias de objetos relacionados ou dependentes, sem especificar suas classes concretas. A descrição "criação de objetos de várias classes graças à especialização de sua classe principal" se encaixa perfeitamente: a fábrica abstrata é especializada por subclasses concretas (especialização) que produzem objetos de várias classes (os produtos da família).
A questão testa a classificação dos padrões GoF (Gang of Four) entre criacionais, estruturais e comportamentais. O aluno precisa identificar qual padrão atende ao requisito de criar múltiplos objetos a partir da especialização de uma classe principal.
Padrão
Classificação (GoF)
Função Principal
Relação com "criação de objetos de várias classes por especialização"
Abstract Factory
Criacional
Fornecer interface para criar famílias de objetos relacionados sem especificar classes concretas
✅ Correta – A especialização da fábrica abstrata em subclasses concretas produz objetos de diferentes classes (produtos da família)
Decorator
Estrutural
Adicionar responsabilidades dinamicamente a um objeto
❌ Não é criacional; não cria objetos de várias classes
Strategy
Comportamental
Definir família de algoritmos intercambiáveis
❌ Não é criacional; não cria objetos
Builder
Criacional
Construir objeto complexo passo a passo, separando construção da representação
❌ Foca em um único produto composto, não em "várias classes" por especialização
Adapter
Estrutural
Converter interface de uma classe em outra esperada pelo cliente
❌ Não é criacional; não cria objetos
Padrões GoF
1Criacionais
Abstract Factory
Cria famílias de objetos
Especialização da classe principal
Builder
Constrói objeto complexo passo a passo
2Estruturais
Decorator
Adiciona responsabilidades dinamicamente
Adapter
Converte interface
3Comportamentais
Strategy
Família de algoritmos intercambiáveis
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
Abstract Factory é o padrão correto. Ele encapsula a criação de famílias de produtos, utilizando uma hierarquia de fábricas abstratas e concretas (especialização). Assim, o sistema fica independente de como os objetos são criados e pode trabalhar com diferentes famílias.
Alternativa B — ❌ Incorreta
Decorator é um padrão estrutural. Ele adiciona responsabilidades dinamicamente a um objeto, sem se preocupar com a criação de objetos de várias classes. Não está relacionado a criação por especialização de classe principal.
Alternativa C — ❌ Incorreta
Strategy é um padrão comportamental. Ele define uma família de algoritmos intercambiáveis, encapsulando cada um e permitindo que variem independentemente dos clientes. Não atende ao aspecto criacional descrito.
Alternativa D — ❌ Incorreta
Builder é um padrão criacional, mas sua função é construir um objeto complexo passo a passo, separando a construção da representação. Ele não cria objetos de "várias classes" (diferentes tipos) a partir de especialização de uma classe principal; foca em um único produto composto. A descrição da questão remete mais a uma fábrica de famílias de produtos (Abstract Factory) do que a um construtor.
Alternativa E — ❌ Incorreta
Adapter é um padrão estrutural. Ele converte a interface de uma classe em outra interface esperada pelos clientes, permitindo que classes com interfaces incompatíveis trabalhem juntas. Não tem relação com criação de objetos.
NÃO CAIA NESSA!
O candidato pode confundir Abstract Factory com Builder, pois ambos são criacionais e usam especialização (classes abstratas e concretas). A diferença crucial: Abstract Factory produz múltiplos objetos de classes diferentes (famílias), enquanto Builder constrói um único objeto complexo. A palavra "várias classes" é o gatilho para escolher Abstract Factory.