Builder (Kurucu) Tasarım Deseni

Builder (Kurucu) Tasarım Deseni karmaşık yapıdaki nesnelerin oluşturulmasında, istemcinin nesne tipi belirterek üretimi gerçekleştirilebilmesini sağlamak için kullanılır. Bu tasarımın yapısı aşağıdaki gibidir.

Builder: Product nesnesinin oluşturulması için gereken soyut arayüzü oluşturur.

ConcreteBuilder: Product nesnesini oluşturur.

Director: Builder arayüzünü kullanarak nesne örneklemesi yapar.

Product: Üretim sonucu ortaya çıkan nesnedir. ConcreteBuilder tarafından inşa edilir.

Örneğimizde, telefon üretim yapısını ele alacağız.Aşağıdaki gibi tasarım desenimizin yapısını örneğimize uyarlayalım.

Builder: TelefonBuilder

ConcreteBuilder: Iphone6S,SamsungGalaxy

Director: TelefonFabrikasi

Product: Telefon

namespace TelephoneBuilder
{
class Program
{

public class Telefon
{
public string Marka { get; set; }
public string IsletimSistemi { get; set; }
public double Boyut { get; set; }
            public override string ToString()
{
return String.Format("Marka :{0} / İşletim Sistemi:{1} / Boyut:{2}", Marka, IsletimSistemi, Boyut.ToString());
}
}
        public abstract class TelefonBuilder
{
protected Telefon telefon;
            public Telefon getTelefon
{
get { return telefon; }
}
            public abstract void TelefonHazirla();
}
        public class Iphone6s : TelefonBuilder
{
public Iphone6s()
{
telefon = new Telefon();
telefon.Boyut = 4;
telefon.IsletimSistemi = "IOS";
}
            public override void TelefonHazirla()
{
telefon.Marka = "Apple";
}
}
        public class SamsungGalaxy : TelefonBuilder
{
public SamsungGalaxy()
{
telefon = new Telefon();
telefon.Boyut = 5;
telefon.IsletimSistemi = "Android";
}
            public override void TelefonHazirla()
{
telefon.Marka = "Samsung";
}
}
        public class TelefonFabrikasi
{
public void Hazirla(TelefonBuilder tBuilder)
{
tBuilder.TelefonHazirla();
}
}
        static void Main(string[] args)
{
TelefonBuilder telefonBuilder;
            TelefonFabrikasi telefonFabrikasi = new TelefonFabrikasi();
telefonBuilder = new Iphone6s();
            telefonFabrikasi.Hazirla(telefonBuilder);
Console.WriteLine(telefonBuilder.getTelefon.ToString());

            telefonBuilder = new SamsungGalaxy();
telefonFabrikasi.Hazirla(telefonBuilder);
Console.WriteLine(telefonBuilder.getTelefon.ToString());
            Console.ReadLine();
}
    }
}