module abstractfactory.nypizzaingredientfactory;

import abstractfactory.pizzaingredientfactory;
import abstractfactory.dough;
import abstractfactory.thincrustdough;
import abstractfactory.sauce;
import abstractfactory.marinarasauce;
import abstractfactory.cheese;
import abstractfactory.reggianocheese;
import abstractfactory.veggies;
import abstractfactory.garlic;
import abstractfactory.onion;
import abstractfactory.mushroom;
import abstractfactory.redpepper;
import abstractfactory.pepperoni;
import abstractfactory.slicedpepperoni;
import abstractfactory.clams;
import abstractfactory.freshclams;

class NYPizzaIngredientFactory : PizzaIngredientFactory
{
    override Dough createDough()
    {
        return new ThinCrustDough();
    }
 
    override Sauce createSauce()
    {
        return new MarinaraSauce();
    }
 
    override Cheese createCheese()
    {
        return new ReggianoCheese();
    }
 
    override Veggies[] createVeggies()
    {
        Veggies[] veggies = cast(Veggies[])[ new Garlic(), new Onion(), new Mushroom(), new RedPepper() ];
        return veggies;
    }
 
    override Pepperoni createPepperoni()
    {
        return new SlicedPepperoni();
    }

    override Clams createClam()
    {
        return new FreshClams();
    }
}
