Pular para o conteúdo principal

Patterns - Abstract Factory

Design Patterns

Funciona por uma interface para criação de famílias de objetos relacionados ou dependentes sem a necessidade de especificar as classes concretas.

É indicado quando:

  • Um sistema de ser independente de como seus produtos são criados, compostos e representados
  • O sistema deve ser configurado com segregação de famílias de produtos ← Esse é o ponto chave do pattern
  • Os produtos de cada família devem ser usados juntos (deve ter uma trava para misturar classes de diferentes famílias)
  • Os produtos devem ser expostos aos clientes por meio de uma class library revelando apenas as interfaces dos mesmos sem implementação

Principais características:

  • O client só depende de abstrações (tanto de produtos quanto de fábricas)
  • AbstractFactory é a interface que o client usa para definir qual fábrica concreta será criada
  • Decidindo qual ConcreteFactory será usada, automaticamente decidimos quais produtos tipos de produtos podem ser criados

Estrutura do pattern

Exemplo

Exemplo de Abstract Factory

Referências