Açıklama : Builder pattern'inde aslında bir inşa sürecinden bahsedilmektedir. Yani bir nesne yaratırken o nesnenin bir yaratım süreci vardır. Builder bir süreç içerisinde nesneye inşa eder(build eder). Gerçek Dünya Senaryosu: Bir kahve yapacağımızı düşünlelim ihtiacımız olan kahve, su veya süttür. Ama biz bu üçünün hepsiye ve sadece ikisiyle de kahve yapabiliriz. Ama bizim kahveyi yapmamız bir süreçtir ilk başta su ve/veya süt ısıtılacak ardından bardağa dökülecek ve su ve/veya süt üzerine kahve atılacak ve karıştırlıması gerekecektir. Bu sebeple kahve yapmak bir süreç gerektiren bir iştir. Basitçe: İnşa eden (Builder) tasarım kalıbı bir süreç ile inşa edilecek olan nesnenin yaratılma sürecine vurgu yapmaktadır. Aynı zamanda : (Telescoping constructor anti-pattern) Teleskop constructor anti pattern'inin üstesinden de gelmektedir. Çünkü az sonra göreceğimiz üzere nesne yaratım süreçi metotlar ile yapılmaktadır, bu sebep ile constructor yerine anlamı metot isimleri kullanarak daha açıklayıcı kod yazabiliriz. Yazılım Örneği : Öncelikle bardak kahve class'ını oluşturalım : class BardakKahve { public float SuMiktari { get; set; } public decimal KahveGramaj { get; set; } public float SütMiktari { get; set; } } Şimdi ise builder yaratalım : class KahveMakinesi { private BardakKahve _kahve; public KahveMakinesi() { _kahve= new BardakKahve(); } public KahveMakinesi SuKoy(float SuMiktari) { _kahve.SuMiktari= SuMiktari; return this; } public KahveMakinesi KahveKoy(decimal kahveMiktari) { _kahve.KahveGramaj= kahveMiktari; return this; } public KahveMakinesi SütKoy(float SütMiktari) { _kahve.SütMiktari= SütMiktari; return this; } public BardakKahve Build() { return _kahve; } } Kullanımı : KahveMakinesi makina = new KahveMakinesi(); var latte = makina.SuKoy(90f).KahveKoy(10m).SütKoy(90f).Build(); Ne zaman kullanılmalı ? Nesne yaratmanın bir süreç olduğu her yerde kullanılabilir. Aynı zamanda nesne yaratırken metot isimleri kullanıldığından nesneyi yaratma sürecini açık hala getirir(dışarıya expose eder).

Açıklama :
Builder pattern'inde aslında bir inşa sürecinden bahsedilmektedir. Yani bir nesne yaratırken o nesnenin bir yaratım süreci vardır. Builder bir süreç içerisinde nesneye inşa eder(build eder).
Gerçek Dünya Senaryosu:
Bir kahve yapacağımızı düşünlelim ihtiacımız olan kahve, su veya süttür. Ama biz bu üçünün hepsiye ve sadece ikisiyle de kahve yapabiliriz. Ama bizim kahveyi yapmamız bir süreçtir ilk başta su ve/veya süt ısıtılacak ardından bardağa dökülecek ve su ve/veya süt üzerine kahve atılacak ve karıştırlıması gerekecektir. Bu sebeple kahve yapmak bir süreç gerektiren bir iştir.
Basitçe:
İnşa eden (Builder) tasarım kalıbı bir süreç ile inşa edilecek olan nesnenin yaratılma sürecine vurgu yapmaktadır.
Aynı zamanda :
(Telescoping constructor anti-pattern) Teleskop constructor anti pattern'inin üstesinden de gelmektedir. Çünkü az sonra göreceğimiz üzere nesne yaratım süreçi metotlar ile yapılmaktadır, bu sebep ile constructor yerine anlamı metot isimleri kullanarak daha açıklayıcı kod yazabiliriz.
Yazılım Örneği :
Öncelikle bardak kahve class'ını oluşturalım :
class BardakKahve
{
public float SuMiktari { get; set; }
public decimal KahveGramaj { get; set; }
public float SütMiktari { get; set; }
}
Şimdi ise builder yaratalım :
class KahveMakinesi
{
private BardakKahve _kahve;
public KahveMakinesi()
{
_kahve= new BardakKahve();
}
public KahveMakinesi SuKoy(float SuMiktari)
{
_kahve.SuMiktari= SuMiktari;
return this;
}
public KahveMakinesi KahveKoy(decimal kahveMiktari)
{
_kahve.KahveGramaj= kahveMiktari;
return this;
}
public KahveMakinesi SütKoy(float SütMiktari)
{
_kahve.SütMiktari= SütMiktari;
return this;
}
public BardakKahve Build()
{
return _kahve;
}
}
Kullanımı :
KahveMakinesi makina = new KahveMakinesi();
var latte = makina.SuKoy(90f).KahveKoy(10m).SütKoy(90f).Build();
Ne zaman kullanılmalı ?
Nesne yaratmanın bir süreç olduğu her yerde kullanılabilir. Aynı zamanda nesne yaratırken metot isimleri kullanıldığından nesneyi yaratma sürecini açık hala getirir(dışarıya expose eder).