Tendo finalmente começado a tentar seriamente aprender alguns padrões básicos (muito tarde na carreira, mas essa é uma história diferente), estou tentando entender as diferenças entre o Factory Factory e o Abstract Factory.
Quais são as principais diferenças entre esses dois padrões?
Entendo que o Método Factory cria objetos por herança e o Abstract Factory faz isso através da composição de objetos, mas, do ponto de vista prático, ainda estou tendo problemas para visualizar exatamente como cada um deles funciona.
design-patterns
factory-method
Phil.Wheeler
fonte
fonte
new
não ser um método (em alguns sistemas de objetos - reconhecidamente comuns).Respostas:
O método Factory geralmente é categorizado por uma instrução switch em que cada caso retorna uma classe diferente, usando a mesma interface raiz para que o código de chamada nunca precise tomar decisões sobre a implementação.
Pense em uma fábrica de validadores de cartão de crédito que retorne um validador diferente para cada tipo de cartão.
O Abstract Factory é onde você tem várias classes de fábrica concretas (não Métodos de Fábrica) derivadas de uma interface que pode retornar muitos tipos diferentes de métodos diferentes.
Pense em um gerente de jogos de xadrez com uma classe diferente para cada conjunto de regras variantes.
Uma Fábrica Abstrata, bem como uma Estratégia, é freqüentemente selecionada usando um Método de Fábrica, mas não é necessário combiná-las, para que seja seu próprio padrão.
fonte