O que é o Padrão Abstract Factory
O padrão Abstract Factory é um dos padrões criacionais do GoF (Gang of Four) que serve para criar famílias de objetos relacionados sem precisar especificar suas classes concretas no código. Ele funciona como uma fábrica de fábricas. Quando você tem vários produtos que precisam ser criados juntos e esses produtos pertencem a famílias diferentes, o Abstract Factory centraliza essa lógica em um único ponto.
sobre o padrão abstract factory assinale a alternativa correta
Para marcar a alternativa certa sobre esse padrão, o conceito essencial que você precisa lembrar é: o Abstract Factory fornece uma interface para criar famílias de objetos relacionados ou dependentes sem acoplar o código cliente às classes concretas. Ele diferencia-se do Factory Method por trabalhar com múltiplos produtos formamdo uma família, enquanto o Factory Method foca em criar apenas um tipo de objeto. Na prática, o padrão se resume a quatro elementos principais. A primeira é a interface AbstractFactory, que declara os métodos de criação para cada produto da família. Depois temos as ConcreteFactoryA e ConcreteFactoryB, que implementam essas interfaces criando os produtos específicos de cada família. Temos também as interfaces AbstractProduct para cada tipo de produto, e finalmente as classes ConcreteProduct que implementam essas interfaces.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Um exemplo real que eu tive foi com um sistema de interface gráfica que precisava suportar temas claros e escuros. Cada tema tinha botões, caixas de texto e checkboxes com aparência diferente. Sem o Abstract Factory, o código ficava repleto de condicionais if-else verificando qual tema estava ativo. Implementando o padrão, criei uma interface ThemeFactory com métodos createButton(), createTextField() e createCheckbox(). As subclasses LightThemeFactory e DarkThemeFactory implementavam esses métodos retornando os componentes apropriados. O código cliente só via a interface ThemeFactory e não sabia se estava usando componentes claros ou escuros. Um detalhe que muitos ignoram é que o Abstract Factory pode se tornar problemático quando você precisa adicionar um novo tipo de produto à família. Isso exige modificar todas as concrete factories existentes para incluir o novo método de criação, o que viola o princípio Aberto-Fechado. Uma solução comum é combinar Abstract Factory com o padrão Builder quando os objetos são complexos demais para serem criados em um único método.
Também é importante notar que o Abstract Factory não é necessário para todos os cenários de criação. Se você precisa criar apenas um tipo de objeto ou se os produtos não têm relação de família, o padrão Factory Method ou até mesmo a instanciação direta são mais adequados. O Abstract Factory brilha quando há dependência entre produtos da mesma família, como garantir que um botão e seu checkbox correspondente tenham a mesma aparência visual. Em questões de prova sobre o tema, a resposta correta geralmente aponta para a capacidade do padrão de garantir que objetos criados juntos pertençam à mesma família e sejam compatíveis entre si. Qualquer alternativa que mencione criar famílias de objetos relacionados sem especificar classes concretas está no caminho certo.