Nota: as perguntas estão no final da postagem.
Eu li os outros threads de stackoverflow sobre Abstract Factory vs Factory Method . Eu entendo a intenção de cada padrão. No entanto, não estou claro sobre a definição.
O Método de Fábrica define uma interface para criar um objeto, mas permite que as subclasses decidam quais delas serão instanciadas. Um método de fábrica permite que as classes adiem a instanciação para subclasses.
Por outro lado, um Abstract Factory fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.
A Fábrica Abstrata é muito parecida com o Método de Fábrica . Eu desenhei algumas classes UML para ilustrar meu argumento.
Nota:
- O diagrama é de www.yuml.com, portanto, não estão perfeitamente orientados. Mas é um serviço gratuito :).
- Os diagramas podem não ser perfeitos. Ainda estou aprendendo os padrões de design do GoF .
Método de fábrica:
Fábrica abstrata (apenas 1 membro):
Fábrica abstrata (mais membros):
Questões:
- Se a Abstract Factory tem apenas um criador e um produto, ainda é o padrão da Abstract Factory ? (uma interface para criar famílias)
- O criador concreto do Método de Fábrica pode ser criado a partir de uma Interface ou precisa ser de uma classe? (as classes adiam instanciações para subclasses)
- Se a Abstract Factory pode ter apenas um criador e um produto, a única diferença entre a Abstract Factory e o Factory Method é que o criador do primeiro é uma interface e o criador do último é uma classe?