Factory Method
Descrição:
Define uma interface para criar um objeto, mas deixa subclasses decidirem qual classe instanciar, ou seja, o Factory Method permite que uma classe adie a instanciação para subclasses. Também é conhecido como Virtual Constructor.
Diagrama de Classes genérico do padrão:
Exemplo:
Criar utilizando o padrão de projeto Factory Method, pizzarias nas quais o cliente possa escolher o tipo de pizza desejada. As pizzarias oferecem os mesmos sabores, mas características diferentes para um mesmo tipo de pizza.
-
PizzaStore: Classe abstrata contendo construtor createPizza(tipo) e o método orderPizza(tipo) que respectivamente criam e preparam uma pizza de acordo com o tipo solicitado no parâmetro.
-
NYPizzaStore, ChicagoPizzaStore: Subclasses de PizzaStore que podem sobrescrever os seus métodos para criar um pizza, representam duas pizzarias.
-
Pizza: Classe abstrata que representa uma pizza genérica.
-
ChicagoStylePepperoniPizza, ChicagoStyleVeggiePizza, ChicagoStyleCheesePizza, ChicagoStyleClamPizza: Subclasses que representam os tipos de pizzas da ChicagoPizzaStore.
-
NYStylePepperoniPizza, NYStyleVeggiePizza, NYStyleCheesePizza, NYStyleClamPizza: Subclasses que representam os tipos de pizzas da NYPizzaStore.