SEPETTEKİ ÜRÜNLERİM
2 Ürün
İstanbul Eğitim Akademi Logo
Eğitimler
Builder

Creational Design Patterns

2. Builder

Builder, nesne oluşturma işlemini basitleştirmek için kullanılan bir design pattern'dır. Bu design nesnelerin karmaşık yapısını ayrı parçalara ayırarak ve nesne oluşturma adımlarını sırayla yürüterek oluşturulmasını sağlar. Bu sayede nesne oluşturma işlemi daha esnek ve özelleştirilebilir hale gelir.

Örnek üzerinde inceleyecek olursak;


Senaryomuza göre bir araba üreticisi olduğunuzu ve müşterilerinizin sipariş ettikleri arabaların özelliklerini (renk, motor gücü, iç döşeme, vb. ) seçmelerini istediğini düşünün.

Bunu Builder Design Pattern ile kodlayacak olsaydık öncelikle Car isimli bir sınıf oluşturmamız gerekiyor.

Ardından, arabayı oluşturacak Builder sınıfımızı tanımlayalım. Bu sınıf içerisinde yapılacak her bir değişiklik için birer Metot tanımlayalım ve bu metotlar sınıfın kendisini geri döndürsün. Bu yönteme "Chain Method" adı veriliyor. Böylece, bu metotların zincirleme olarak kullanılarak arabanın özelliklerini ayarlayabiliriz.

Son olarak, arabayı oluşturmak için kullanacağımız Direktor sınıfımızı tanımlayalım

Direktor sınıfımız, arabanın özelliklerini belirleyen metotları çağırarak arabayı oluşturuyor.

Örnekten de anlayacağımız üzere, mevcut sınıfımızın her bir parçasını ayrı tanımlanabilir bir sınıf ile oluşturduktan sonra onu ayrı bir sınıfla parça parça atanabilir hale getiriyoruz. Bu design pattern'ın artılarına ve eksilerine bakacak olursak;

    Artıları
  1. Nesne oluşturma işlemi daha esnek hale gelir. Nesne oluşturma işlemini adım adım gerçekleştirir, böylece nesne özellikleri kolayca değiştirilebilir veya eklenip çıkarılabilir.
  2. Nesne yapısı daha anlaşılır hale gelir. Nesne yapısını ve özelliklerini ayrı ayrı ele alır, böylece nesne yapısı daha net bir şekilde anlaşılır.
  3. Tekrar kullanılabilir kod oluşturulabilir. Nesne oluşturma işlemini bir sınıf içinde toplar ve bu sınıfın farklı yerlerde tekrar kullanılması mümkündür.
  4. Kodun okunabilirliği artar. Nesne oluşturma işlemini adım adım gerçekleştirir ve bu adımlar açıkça görülebilir, böylece kodun okunması ve anlaşılması daha kolay olur.
    Eksileri
  1. Nesne oluşturma işlemini biraz daha karmaşık hale getirir. Nesne oluşturma işlemi adım adım gerçekleştirilir, bu da biraz daha fazla kod yazılmasını gerektirir.
  2. Sınıflar arasında biraz daha fazla bağımlılık oluşturabilir. Builder sınıfı, oluşturulacak nesne sınıfına bağlıdır, bu da biraz daha fazla bağımlılık yaratır.
  3. Nesne yapısının karmaşık olması durumunda kullanılması biraz daha zor hale gelebilir. Nesne yapısı çok karmaşık olduğunda, Builder tasarım deseni kullanmak yerine farklı bir tasarım deseni tercih edilebilir.

Builder Design Pattern, nesne oluşturma işlemini adım adım gerçekleştirerek daha esnek, anlaşılır ve tekrar kullanılabilir bir yapı sağlar. Bu desen sayesinde, nesne özellikleri kolayca değiştirilebilir veya eklenip çıkarılabilir, nesne yapısı daha net bir şekilde anlaşılır ve kodun okunabilirliği artar. Ancak, nesne yapısı karmaşık olduğunda kullanımı biraz daha zor hale gelebilir ve sınıflar arasında biraz daha fazla bağımlılık oluşturabilir. Builder tasarım desenini, özellikle nesne oluşturma işleminin dinamik ve değişken olduğu durumlarda kullanmak faydalı olabilir.