Pular para o conteúdo principal

Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — FGV 2025

Arquitetura de SoftwarePadrõ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
  1. AAbstract Factory.
  2. BPrototype.
  3. CAdapter.
  4. DBuilder.
  5. 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

1Abstract Factory
Famílias de objetos relacionados
Cliente não conhece classes concretas
2Builder
Objeto complexo passo a passo
3Prototype
Clonagem de instâncias
Padrões criacionais (GoF)
LEVELsoulevel.com.br
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.

Gabarito: letra A.

Link permanente: /questoes/fg104559