module abstractfactory.cheesepizza;

import abstractfactory.pizza;
import abstractfactory.pizzaingredientfactory;
import std.stdio : writeln;

class CheesePizza : Pizza
{
    PizzaIngredientFactory ingredientFactory;

    this(PizzaIngredientFactory ingredientFactory)
    {
        this.ingredientFactory = ingredientFactory;
    }

    override void prepare()
    {
        writeln("Preparing ", name);
        dough = ingredientFactory.createDough();
        sauce = ingredientFactory.createSauce();
        cheese = ingredientFactory.createCheese();
    }
}
