The Factory Pattern, like the other Factory Patterns, encapsulates object creation. The Factory Method Pattern encapsulates object creation by letting subclasses decide what objects to create. The Factory Method Pattern defines an interface for creating an object, but lets subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.
An example of the Factory Method Design Pattern follows:
public abstract class PizzaStore {
public Pizza orderPizza(String ttype) {
Pizza pizza;
pizza = createPizza(type);
pizza.prepare();
pizza.bake();
...
}
protected abstract Pizza createPizza(String type);
}
public class NYPizzaStore extends PizzaStore {
public Pizza createPizza(String type) {
Pizza pizza;
if (type.equals("cheese")) {
pizza = new NYStyleCheesePizza();
}
if (type.equals("pepperoni")) {
pizza = new NYStylePepperoniPizza();
}
if (type.equals("veggie")) {
pizza = new NYStyleVeggiePizza():
}
return pizza;
}
}