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(); } }