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