Um construtor sempre retorna uma instância completamente nova de sua classe exata, com um nome fixado à classe. Um método factory é um método comum (frequentemente estático) que cria objetos — dando a você liberdade sobre nomenclatura, qual subtipo retornar, e se criar um novo objeto em tudo.
