Padrões de design: Fábrica vs método de fábrica vs Fábrica abstrata
Eu estava lendo padrões de design de um site
Lá eu li sobre fábrica, método de fábrica e fábrica abstrata, mas eles são tão confusos, não estou claro sobre a definição. De acordo com as definições
Fábrica - Cria objetos sem expor a lógica de instanciação ao cliente e Refere-se ao objeto recém-criado por meio de uma interface comum.É uma versão simplificada do método de fábrica
Factory Method - Define uma interface para criação de objetos, mas permite que subclasses decida qual classe instanciar e Refere-se ao objeto recém-criado através de uma interface comum.
Abstract Factory - Oferece a interface para criar uma família de objetos relacionados, sem especificar explicitamente suas classes.
Eu também procurei os outros encadeamentos stackoverflow em relação ao Abstract Factory vs Factory Method, mas os diagramas UML desenhados lá tornam meu entendimento ainda pior.
Alguém pode me dizer por favor
Como esses três padrões são diferentes uns dos outros?Quando usar qual?E também, se possível, algum exemplo de java relacionado a esses padrões?