Pular para o conteúdo principal

Questão de Programação — Programação Orientada a Objetos — FGV 2026

ProgramaçãoProgramação Orientada a Objetos
Código
fg129180
Banca
FGV
Órgão
AMAZUL
Ano
2026
Nível
Superior
Cargo
Engenheiro de Computação
Uma equipe de desenvolvimento identificou que o código de um módulo de autenticação está sendo duplicado em vários pontos do sistema, dificultando a manutenção. A equipe decide refatorar o código aplicando um padrão que centralize a criação de objetos de autenticação, permitindo que subclasses decidam qual tipo específico de autenticador instanciar (OAuth, LDAP, ou local).O padrão de projeto que atende a essa necessidade é chamado
  1. AAbstract Factory.
  2. BFactory Method.
  3. CBuilder.
  4. DPrototype.
  5. ESingleton.
Revelar gabarito e comentário

GabaritoB — Factory Method.

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: Factory Method

Gabarito: letra B. O enunciado descreve uma situação em que há um código duplicado para criar objetos de autenticação, e a solução é centralizar a criação, permitindo que subclasses decidam qual tipo específico de autenticador instanciar (OAuth, LDAP, ou local). Esse é o papel do padrão Factory Method, que define uma interface para criar um objeto, mas delega às subclasses a decisão de qual classe concreta instanciar.

A banca testa a capacidade de distinguir os padrões de projeto criacionais do GoF. O Factory Method é frequentemente confundido com Abstract Factory, mas a descrição do enunciado — "subclasses decidam qual tipo específico de autenticador instanciar" — aponta diretamente para o primeiro.

Padrão de Projeto

Característica Principal

Aplicação no Enunciado

Correto?

Factory Method

Define interface para criar um objeto, mas subclasses decidem qual classe concreta instanciar.

Centraliza a criação de autenticadores, permitindo que subclasses escolham entre OAuth, LDAP ou local.

✅ Sim

Abstract Factory

Fornece interface para criar famílias de objetos relacionados.

Enunciado menciona um único tipo de produto (autenticador), não uma família.

❌ Não

Builder

Constrói objetos complexos passo a passo.

Não há construção complexa ou passo a passo descrita.

❌ Não

Prototype

Cria novos objetos por clonagem de um protótipo.

Não há menção a clonagem ou cópia.

❌ Não

Singleton

Garante uma única instância e acesso global.

Problema não é sobre controle de instâncias, mas sobre criação variável.

❌ Não

Alternativa A — ❌ Incorreta

Abstract Factory fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. O foco não é permitir que subclasses decidam qual classe instanciar, mas sim garantir que objetos de uma mesma família sejam usados juntos. O enunciado menciona um único tipo de produto (autenticador), não uma família.

Alternativa B — ✅ Correta ⟵ GABARITO

Factory Method define um método para criar objetos, permitindo que subclasses alterem o tipo de objeto que será criado. É exatamente o que a equipe precisa: uma classe base (ou interface) com um método criarAutenticador(), e subclasses concretas que implementam esse método para retornar AutenticadorOAuth, AutenticadorLDAP, ou AutenticadorLocal.

Alternativa C — ❌ Incorreta

Builder é usado para construir objetos complexos passo a passo, separando a construção da representação final. Não se aplica à necessidade de criar diferentes variantes de um produto de forma intercambiável por subclasses.

Alternativa D — ❌ Incorreta

Prototype permite criar novos objetos copiando um protótipo existente (clonagem). Não há menção a clonagem ou cópia no enunciado.

Alternativa E — ❌ Incorreta

Singleton garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso a ela. O problema descrito não é sobre controlar o número de instâncias, mas sobre como criar diferentes tipos de autenticadores.

NÃO CAIA NESSA!

A banca pode induzir à confusão entre Factory Method e Abstract Factory. A chave está no verbo: se as subclasses decidem qual classe concreta instanciar (escolha única), é Factory Method. Se o objetivo é criar famílias de objetos relacionados que devem ser usados juntos, é Abstract Factory. No caso, o sistema precisa de diferentes autenticadores (OAuth, LDAP, local), mas todos são do mesmo tipo (autenticador), sem uma família de produtos.

Gabarito: letra B.

Link permanente: /questoes/fg129180