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