Alternativa C - Criar uma família de objetos relacionados sem especificar suas classes concretas.
Análise da Questão
O enunciado descreve explicitamente a funcionalidade principal do padrão de projeto Abstract Factory (Fábrica Abstrata). Vamos detalhar os conceitos envolvidos para entender por que esta é a resposta correta.
O Padrão Abstract Factory
Este é um padrão de criação (Creational Pattern) focado em criar famílias de objetos interdependentes ou relacionados.
- Propósito Principal: Definir uma interface para criar produtos, mas deixar para as subclasses decidir qual classe concreta instanciar.
- Benefício no Contexto: Permite trocar toda uma "família" de produtos (ex: categorias de produtos online) sem alterar o código que usa esses produtos.
- Exemplo Prático: Um sistema de vendas pode ter fábricas para "Produtos Físicos" e "Produtos Digitais". Cada fábrica cria seus próprios itens (ex: uma cadeira e uma mesa da fábrica física; um ebook e um curso da fábrica digital) sem que o cliente precise saber qual classe foi criada.
Comparação com outras Alternativas
Para confirmar a escolha, analisamos as definições das outras opções apresentadas:
| Alternativa | Descrição | Padrão Correspondente |
|---|
| A | Garantir apenas uma instância | Singleton |
| B | Construção em múltiplas etapas | Builder |
| C | Família de objetos relacionados | Abstract Factory (Correta) |
| D | Clonar objetos | Prototype |
| E | Gerenciar ciclo de vida | Variados (ex: Object Pool) |
Conclusão
A alternativa C resume exatamente a definição clássica encontrada na literatura de engenharia de software (como no livro "Gang of Four"): "Provide an interface for creating families of related or dependent objects without specifying their concrete classes."
Portanto, a flexibilidade mencionada no texto para adicionar novas categorias refere-se à capacidade de implementar novas Fábricas Concretas que atendem ao contrato da Fábrica Abstrata, sem modificar o código existente.