Pular para o conteúdo principal

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

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

Gabarito: letra A – Abstract Factory.

Link permanente: /questoes/fg075817