É um padrão de projeto usado para criar um objeto sem expor a lógica de sua criação ao cliente, buscando o uso de interfaces comuns.