Builder Pattern'i temel olarak, karmaşık constructor yapısına sahip nesnelerin ayrıştırılmasına yardımcı olan design patternlerden birisidir, nesne yaratılması sırasında aynı construction farklı kullanımlı nesne yaratılmak için kullanılır. Anlamı, nesnenin değerlerini constructor alarak nesneleri uygun olarak oluşturur. Örneğim bir pizza siparişi alan, pizzayı türüne göre üreten ve teslim edilen süreçin örneğidir.
namespace
BuilderPattern
{
//Temel Pizza Nesnem
public class Pizza
{
public Pizza()
{
}
public string Hamur;
public string Sos;
public string Malzeme;
public void SetHamur(string h)
{
Hamur = h;
}
public void SetSos(string s)
{
Sos = s;
}
public void SetMalzeme(string m)
{
Malzeme = m;
}
}
//Pizza yapıcım
public abstract class PizzaBuilder
{
public PizzaBuilder()
{
}
protected Pizza _Pizza;
public Pizza GetPizza()
{
return _Pizza;
}
public void CreateNewPizza()
{
_Pizza =
new Pizza();
}
public abstract void buildHamur();
public abstract void buildSos();
public abstract void buildMalzeme();
}
//Pizalarımı nasıl yapıcağım :)tarifleri
public class TurkishPizza : PizzaBuilder
{
public override void buildHamur()
{
_Pizza.SetHamur(
"InceHamur");
}
public override void buildSos()
{
_Pizza.SetSos(
"Chilli Sos");
}
public override void buildMalzeme()
{
_Pizza.SetMalzeme(
"Mantar+Pastırma+Mozzarella+Zeytin");
}
}
//Pizalarımı nasıl yapıcağım :)tarifleri
public class ItalianoPizza : PizzaBuilder
{
public override void buildHamur()
{
_Pizza.SetHamur(
"DublexHamur");
}
public override void buildSos()
{
_Pizza.SetSos(
"Hardal Sos");
}
public override void buildMalzeme()
{
_Pizza.SetMalzeme(
"Siyah Zeytin+Mozzarella+Küp Sucuk");
}
}
//Sipariş alan ve Pizzayı veren vatandaş :)
class Garson
{
private PizzaBuilder pizzaBuilder;
public void setPizzaBuilder(PizzaBuilder pb)
{
pizzaBuilder = pb;
}
public Pizza GetPizza()
{
return pizzaBuilder.GetPizza();
}
public void PizzaHazirla()
{
pizzaBuilder.CreateNewPizza();
pizzaBuilder.buildHamur();
pizzaBuilder.buildSos();
pizzaBuilder.buildMalzeme();
}
}
//Kullanımı
public class Program
{
//Sipariş 1 Turkish pizza siparişi
public static void Main(string[] args)
{
Garson g = new Garson();
PizzaBuilder turkishPizza = new TurkishPizza();
g.setPizzaBuilder(turkishPizza);
g.PizzaHazirla();
Pizza p = g.GetPizza();
Console.WriteLine(p.Malzeme + " " + p.Hamur + " "+p.Sos);
Console.Read();
}
}
}