public class PizzaStore {
    SimplePizzaFactory factory;
    public PizzaStore(SimplePizzaFactory factory){
        this.factory = factory;
    }

    public Pizza orderPizza(String type){
        Pizza pizza = null;
        pizza = factory.createPizza(type);
        pizza.prepare();
        pizza.bake();
        pizza.cut();
        pizza.box();
        return pizza;
    }
    public static void main(String[] args){
        NYPizzaFactory nyFactory = new NYPizzaFactory();
        PizzaStore nyStore = new PizzaStore(nyFactory);
        nyStore.orderPizza("veggie");
        ChicagoPizzaFactory chicagoFactory = new ChicagoPizzaFactory();
        PizzaStore chicagoStore = new PizzaStore(chicagoFactory);
        chicagoStore.orderPizza("veggie");
    }
}

interface Pizza{
    public void prepare();
    public void bake();
    public void cut();
    public void box();
}
class CheesePizza implements Pizza{
    public void prepare(){

    }
    public void bake(){

    }
    public void cut(){

    }
    public void box(){
       
    }
}
class GreekPizza implements Pizza{
    public void prepare(){

    }
    public void bake(){

    }
    public void cut(){

    }
    public void box(){
       
    }
}
class PepperoniPizza implements Pizza{
    public void prepare(){

    }
    public void bake(){

    }
    public void cut(){

    }
    public void box(){
       
    }
}
class ClamPizza implements Pizza{
    public void prepare(){

    }
    public void bake(){

    }
    public void cut(){

    }
    public void box(){
       
    }
}
class VeggiePizza implements Pizza{
    public void prepare(){

    }
    public void bake(){

    }
    public void cut(){

    }
    public void box(){
       
    }
}
class SimplePizzaFactory{
    public Pizza createPizza(String type){
        Pizza pizza = null;
        if(type.equals("cheese")){
            pizza = new CheesePizza();
        }else if(type.equals("pepperoni")){
            pizza = new PepperoniPizza();
        }else if(type.equals("clam")){
            pizza = new ClamPizza();
        }else if(type.equals("veggie")){
            pizza = new VeggiePizza();
        }
        return pizza;
    }
}
class NYPizzaFactory extends SimplePizzaFactory{

}
class ChicagoPizzaFactory extends SimplePizzaFactory{

}
class CaliforniaPizzaFactory extends SimplePizzaFactory{

}
