Biblioteca de Engenharia para IA
Prévia Markdown

Guia de Referência: Abstract Factory (Criacional)

Visualização renderizada do arquivo padroes/criacionais/abstract-factory.md. O conteúdo abaixo é o mesmo arquivo destinado a orientar a IA.

Guia de Referência: Abstract Factory (Criacional)

Este guia orienta a aplicação do padrão Abstract Factory em projetos de software. Objetivo: Criar famílias coerentes de objetos relacionados sem expor classes concretas ao código cliente. O padrão deve ser usado somente quando as forças do problema o justificarem.


1. Problema que resolve

O sistema precisa trocar um conjunto inteiro de componentes compatíveis (por tema, fornecedor, plataforma, ambiente ou protocolo) sem misturar variantes.

Sinais no código/arquitetura

2. Quando usar

3. Quando NÃO usar

4. Estrutura e participantes

5. Procedimento de implementação

  1. Mapeie quais produtos sempre variam em conjunto.
  2. Defina um contrato para cada produto.
  3. Defina uma fábrica com métodos para todos os produtos da família.
  4. Implemente uma fábrica por família.
  5. Injete uma única fábrica no cliente e proíba criação concreta fora do composition root.

6. Exemplo mental

CloudFactory cria Storage, Queue e Mailer. AwsFactory retorna a família AWS; LocalFactory retorna implementações locais para testes.

7. Benefícios esperados

8. Custos e trade-offs

9. Encaixe com Clean Architecture e SOLID

A interface da fábrica pode pertencer à aplicação; fábricas concretas e SDKs ficam em infraestrutura. O composition root escolhe a família.

Regras para a IA:

10. Caminho de refatoração

Útil quando um mesmo if provider == ... se repete para construir diversos componentes relacionados.

Ao refatorar um sistema existente:

  1. Proteja o comportamento atual com testes.
  2. Faça passos pequenos e reversíveis.
  3. Introduza primeiro a abstração/contrato.
  4. Migre um fluxo por vez.
  5. Remova código antigo apenas após equivalência comportamental comprovada.

11. Estratégia de testes

Use uma fábrica fake para testes de aplicação; crie testes de contrato que garantam que cada família entrega produtos compatíveis.

Checklist mínimo:

12. Padrões relacionados

13. Perguntas de diagnóstico para a IA

  1. Qual aspecto do sistema realmente varia?
  2. Essa variação já está causando duplicação, condicionais ou acoplamento?
  3. Uma função/composição simples resolveria com menos abstrações?
  4. O padrão reduz o custo de uma mudança concreta que já é provável?
  5. Qual é o custo de introduzir novas classes, indireção e configuração?
  6. Como a decisão será testada e observada em produção?

14. Prompt pronto

Você é o arquiteto do projeto. Avalie se o padrão **Abstract Factory** é adequado para o problema abaixo.

Contexto: [DESCREVA o sistema, stack/arquitetura, estado atual e o problema observado]
Objetivo: [DESCREVA o resultado esperado ao avaliar ou aplicar este padrão]
Restrições: [DESCREVA prazo, legado, performance, testes, compatibilidade e o que não pode mudar]

Antes de codificar:
1. Identifique as forças que justificam ou rejeitam Abstract Factory.
2. Compare pelo menos uma alternativa mais simples e um padrão relacionado (Factory Method, Prototype, Builder).
3. Se o padrão for justificado, mostre participantes, dependências e fluxo.
4. Preserve Clean Architecture/SOLID: regras centrais não dependem de infraestrutura.
5. Implemente incrementalmente, com testes.
6. Ao final, liste trade-offs e sinais de overengineering.

Não aplique o padrão apenas porque foi solicitado; rejeite-o se não houver variação/complexidade que o justifique.

Como preencher os campos

Exemplo preenchido

Contexto: Aplicação suporta dois kits visuais completos e cada kit possui botão, campo e diálogo compatíveis.
Objetivo: Trocar a família inteira de componentes sem misturar implementações de temas diferentes.
Restrições: Famílias devem permanecer coerentes; não usar se só um componente varia.

15. Critério de aceite

A aplicação de Abstract Factory só está concluída quando:

16. Base Conceitual e Relações

/mind-map
Navegação contextual

Mapa gerado a partir dos títulos desta página. Clique em um ramo para abrir o expander correspondente e ir diretamente à seção.

progress_activity Gerando mapa…
Configurações

Aparência

Escolha como a biblioteca deve aparecer neste navegador.

Desenvolvimento

Informações da versão e autoria ficam disponíveis somente nesta área.