Questão de Programação — Programação Orientada a Objetos — FGV 2026
- Código
- fg129180
- Banca
- FGV
- Órgão
- AMAZUL
- Ano
- 2026
- Nível
- Superior
- Cargo
- Engenheiro de Computação
- AAbstract Factory.
- BFactory Method.
- CBuilder.
- DPrototype.
- ESingleton.
GabaritoB — 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 |
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.
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.
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.
Prototype permite criar novos objetos copiando um protótipo existente (clonagem). Não há menção a clonagem ou cópia no enunciado.
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.
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