Builder Patterni

 

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

}

}

}

15 Ağustos 2007 Çarşamba 14:17 gönderen MuratHAKSAL
Filed Under: ,

Yorumlar