- Como esses três padrões são diferentes um do outro?
Fábrica: cria objetos sem expor a lógica da instanciação ao cliente.
Método de Fábrica: Defina uma interface para criar um objeto, mas deixe as subclasses decidirem qual classe instanciar. O método Factory permite que uma classe adie a instanciação para subclasses
Fábrica abstrata: fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.
O padrão AbstractFactory usa composição para delegar a responsabilidade de criar objetos para outra classe, enquanto o padrão de design do método Factory usa herança e depende da classe ou subclasse derivada para criar o objeto
- Quando usar qual?
Fábrica: o cliente precisa apenas de uma classe e não se importa com a implementação concreta que está recebendo.
Método de Fábrica: O cliente não sabe quais classes concretas serão necessárias para criar em tempo de execução, mas apenas deseja obter uma classe que fará o trabalho.
AbstactFactory: Quando seu sistema precisar criar várias famílias de produtos ou você desejar fornecer uma biblioteca de produtos sem expor os detalhes da implementação.
Resumo As classes de fábrica geralmente são implementadas com o método de fábrica. Os métodos de fábrica geralmente são chamados nos métodos de modelo.
- E também se possível, existem exemplos de java relacionados a esses padrões?
Fábrica e FactoryMethod
Intenção:
Defina uma interface para criar um objeto, mas deixe as subclasses decidirem qual classe instanciar. O Factory Factory permite que uma classe adie a instanciação para subclasses.
Diagrama UML :
Produto: define uma interface dos objetos que o método Factory cria.
ConcreteProduct: Implementa a interface do produto
Criador: declara o método Factory
ConcreateCreator: implementa o método Factory para retornar uma instância de um ConcreteProduct
Declaração do problema: Crie um Factory of Games usando o Factory Methods, que define a interface do jogo.
Fragmento de código:
Padrão de fábrica. Quando usar métodos de fábrica?
Comparação com outros padrões criacionais:
O design começa usando o Factory Method (subclasses menos complicadas, personalizáveis e proliferam) e evolui para Abstract Factory, Prototype ou Builder (mais flexível, mais complexo) à medida que o designer descobre onde é necessária mais flexibilidade
Resumo As classes de fábrica geralmente são implementadas com os métodos de fábrica , mas também podem ser implementadas usando o protótipo
Referências para outras leituras: Criação de padrões de design de origem