Builder Design Pattern Nedir? in Java

Mehmet Demircan
2 min readJun 21, 2020

Merhaba arkadaşlar,
Bu yazımda OOP dillerinde çeşitli nesne oluşturma sorunlarına çözüm sağlamak amacıyla tasarlanmış Builder Design Pattern’den bahsedeceğim.

Birçok parametresi tanımlanmış bir sınıf düşünelim. Sınıflara dayalı bir uygulamada bu sınıfları farklı sınıflarda nesnelere dönüştürür ve kullanmaya başlarız. Bu nesneleri çağırırken aslında bir constructor yapısı oluştururuz. Ve bu constructor yapısında zorunlu olmayan parametreleri esnetebileceğimiz birbirinden farklı birçok constructor oluşturmamız gerekebilir. Bir örnek üzerinden gidecek olursak; Aşağıdaki gibi bir Person sınıfımız olsun.

Yukarıdaki sınıfımıza göre bir Person nesnesi yaratmak istediğimizde bize iki seçenek sunulmuştur. (age, firstName, lastName) veya (firstName, lastName) parametreleri alan iki constructordan birini tercih etmemiz gerekmektedir. Bunun dışında compiler anında aşağıdaki kod örneğinde yer alan hatayla karşılaşmamız kaçınılmazdır. Bu durumda ya yeni constructor oluşturabilir yada argüman almayan bir constructor oluşturup tek tek değer atamak istediğimiz alanlarımızı set edebiliriz.

img: without Builder Design Pattern
img: with Builder Design Pattern

Person sınıfımıza Builder Pattern’i aşağıdaki gibi uygulayabiliriz. Burada aslında esnek bir constructor yapısı oluşturduk. Ve kod akışı olarak Person sınıfımıza ait static builder methodunu çağırarak nesnemizi oluşturmaktayız. Alanlarımızı bu nesne üzerinden set ederken son olarak bu nesnemize ait build methodu ile Person nesnemizi oluşturmaktayız.

Bildiklerimi olabildiğince anlatmaya çalıştım, umarım faydalı olmuştur.

Şahsi fikirlerim;

Neden tercih edebiliriz?

  • Birbirinden farklı argümanlar alan bir çok constructora gerek duymayız.
  • Kod okunurluğu ve temiz görünümü açısından bence güzel. :)

Neden tercih etmemeliyiz?

  • Her bir nesnemizi oluştururken builder methodumuz ile yeni bir nesne yaratmak belleği şişirebilir, yüksek trafik içeren uygulamalarımızda performans kaybına yol açabilir.

Kaynaklar:

--

--