diff --git a/Day 3 Class Examples/builderexample/Program.cs b/Day 3 Class Examples/builderexample/Program.cs new file mode 100644 index 0000000..c8775c2 --- /dev/null +++ b/Day 3 Class Examples/builderexample/Program.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace pizzaexample +{ + class Program + { + public class Pizza + { + public string dough = ""; + public string sauce = ""; + public string topping = ""; + } + abstract class PizzaBuilder + { + protected Pizza pizza; + + public Pizza GetPizza() + { + return pizza; + } + + public void CreateNewPizzaProduct() + { + pizza = new Pizza(); + } + + public abstract void BuildDough(); + public abstract void BuildSauce(); + public abstract void BuildTopping(); + } + + class HawaiianPizzaBuilder : PizzaBuilder + { + public override void BuildDough() + { + pizza.dough = "cross"; + } + + public override void BuildSauce() + { + pizza.sauce = "mild"; + } + + public override void BuildTopping() + { + pizza.topping = "ham+pineapple"; + } + } + + class SpicyPizzaBuilder : PizzaBuilder + { + public override void BuildDough() + { + pizza.dough = "pan baked"; + } + + public override void BuildSauce() + { + pizza.sauce = "hot"; + } + + public override void BuildTopping() + { + pizza.topping = "pepperoni + salami"; + } + } + + class Cook + { + private PizzaBuilder _pizzaBuilder; + + public void SetPizzaBuilder(PizzaBuilder pb) + { + _pizzaBuilder = pb; + } + + public Pizza GetPizza() + { + return _pizzaBuilder.GetPizza(); + } + + public void ConstructPizza() + { + _pizzaBuilder.CreateNewPizzaProduct(); + _pizzaBuilder.BuildDough(); + _pizzaBuilder.BuildSauce(); + _pizzaBuilder.BuildTopping(); + } + } + + static void Main(string[] args) + { + PizzaBuilder hawaiianpizzabuilder = new HawaiianPizzaBuilder(); + Cook cook = new Cook(); + cook.SetPizzaBuilder(hawaiianpizzabuilder); + cook.ConstructPizza(); + Pizza hawaiian = cook.GetPizza(); + } + } +}