Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — FGV 2025
Arquitetura de Software›Padrões de projeto (Design Patterns)
Código
fg104559
Banca
FGV
Órgão
AL-AM
Ano
2025
Nível
Superior
Cargo
Analista Legislativo - Analista de Sistema
A Assembleia Legislativa utiliza diferentes sistemas operacionais (Windows, Linux) em seus gabinetes e precisa gerar relatórios de auditoria que sejam compatíveis com cada ambiente. O Analista de Sistemas deseja criar famílias de objetos relacionados (GeradorRelatorioWindows, GeradorRelatorioLinux e VisualizadorWindows, VisualizadorLinux) sem que o código cliente precise saber as classes concretas que estão sendo utilizadas.O Padrão de Projeto Criacional ideal para fornecer uma interface para a criação de famílias de objetos relacionados ou dependentes, sem especificar suas classes concretas, é o
AAbstract Factory.
BPrototype.
CAdapter.
DBuilder.
ECommand.
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 Criacionais – Abstract Factory
Gabarito: letra A. O Abstract Factory é o padrão criacional cuja intenção é exatamente “fornecer uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas”, conforme descrito no livro GoF (Design Patterns). A questão descreve a necessidade de criar famílias de objetos (GeradorRelatorioWindows, VisualizadorWindows, etc.) sem que o cliente conheça as classes concretas – isso é a essência do Abstract Factory.
Padrão de Projeto
Categoria
Intenção Principal
Relação com a Questão
Abstract Factory
Criacional
Fornecer interface para criar famílias de objetos relacionados sem especificar classes concretas
✅ Correta – atende exatamente à necessidade de criar GeradorRelatorioWindows/Linux e VisualizadorWindows/Linux
Prototype
Criacional
Clonar objetos existentes para evitar recriação custosa
❌ Não serve para criar famílias de objetos
Adapter
Estrutural
Converter interface de uma classe em outra esperada pelo cliente
❌ Não é criacional e não trata criação de famílias
Builder
Criacional
Separar construção de objeto complexo de sua representação
❌ Foca em construção passo a passo, não em famílias
Command
Comportamental
Encapsular solicitação como objeto
❌ Não é criacional e não trata criação de objetos
Padrões criacionais (GoF): Abstract Factory (Famílias de objetos relacionados, Cliente não conhece classes concretas); Builder (Objeto complexo passo a passo); Prototype (Clonagem de instâncias)
Alternativa A — ✅ Correta ⟵ GABARITO
O Abstract Factory (Fábrica Abstrata) é o padrão que isola o cliente da criação de famílias de objetos. Ele define uma interface para criar todos os objetos de uma família (no exemplo: geradores e visualizadores para um SO), mantendo o cliente independente de como esses objetos são instanciados. É o único padrão criacional que lida com múltiplos produtos relacionados.
Alternativa B — ❌ Incorreta
O Prototype (Protótipo) é usado para clonar objetos existentes, evitando recriação custosa, e não serve para criar famílias de objetos. Seu foco é cópia de instâncias, não abstração de famílias.
Alternativa C — ❌ Incorreta
O Adapter (Adaptador) é um padrão estrutural, não criacional. Ele converte a interface de uma classe em outra que o cliente espera, permitindo que classes incompatíveis trabalhem juntas. Não tem relação com criação de famílias.
Alternativa D — ❌ Incorreta
O Builder (Construtor) é um padrão criacional que separa a construção de um objeto complexo de sua representação, permitindo criar diferentes representações de um mesmo processo. Ele é útil quando um objeto tem muitas partes ou etapas de construção, mas não lida com famílias de objetos relacionados.
Alternativa E — ❌ Incorreta
O Command (Comando) é um padrão comportamental, não criacional. Ele encapsula uma solicitação como um objeto, permitindo parametrizar clientes com filas, requisições e operações. Não tem relação com criação de objetos.
PEGA ESSA DICA!
Grave a intenção de cada padrão criacional do GoF: Abstract Factory = famílias de objetos; Builder = construção passo a passo de um objeto complexo; Factory Method = um método que cria objetos (usado como base para Abstract Factory); Prototype = clonagem. Na dúvida, leia a descrição e veja se o problema pede “famílias de produtos” – aí é Abstract Factory.