Android’de Tasarım Desenleri: Builder

Design patternler yazılım geliştirme süreçlerinde kodun tekrar kullanılabilirliği, okunabilirliği ve geliştirme sürecini hızlandırması açısından oldukça önemli bir yere sahiptirler.

Normalde yazılım dilinden ya da platformundan bağımsız olsalar da ben design patternleri Android uygulama geliştirirken nasıl kullanabileceğimizi bu ve bundan sonraki yazılarımda bahsetmeye çalışacağım.

Design patternler aslında 3 ana başlıkta toplanırlar. Bunlar;

  • Creational Design Patterns (Singleton, Factory, Builder vs.)
  • Structural Design Patterns (Adapter, Facade, Proxy vs.)
  • Behavioral Design Patterns (Observer, Command, Strategy vs)

Builder Pattern

Builder tasarım deseni nesne oluşturmayı zincirleme metod çağırımları ile basitleştirir ve kod okunabilirliğini arttırır. Bu sayede bazı parametreleri opsiyonel ya da zorunlu yapabiliriz. Android’de en sık kullanılan Builder pattern, Android SDK içerinde yer alan AlertDialog.Builder dır.

Peki biz kendi Builder classımızı yazmak istersek nasıl yazabiliriz buna bakalım.

Bir kullanıcı nesnesini, Builder pattern kullanarak oluşturduğunuzu düşünün. Model classı alttaki gibi olacaktır.

Daha sonra yine bu User classı içine bir tane Builder classı oluşturuyoruz. (Kodlar çok uzun olacağı için Builder classı ayrı bir classmış gibi alta yazdım aslında User classı içerisinde yer alıyor)

Üstte gördüğünüz gibi aynı propertyleri bu class içerisinde de tanımladık ve dönüş değeri Builder classı olan setter metodları yazdık. Bu metodlar içinde return thisdiyerek zincirleme metod çağırımının yapılabilmesine olanak sağladık. En sonda da create metodu ile yeni bir User nesnesi oluşturduk.

Şimdi yazdığımız bu Builder classını User classına constructor parametresi olarak vermemiz gerekiyor.

Burada önemli nokta constructor private olmalı ve dışarıdan buraya erişim sağlanmamalıdır. Bu sayede sadece Builder classı kullanarak bir nesne türetme işlemi yapabileceğiz.

Yukarıda bazı parametrelerin opsiyonel bazılarının zorunlu olabileceğinden bahsettim. Şimdi bu kısıtlamayı yapalım. Örneğin firstName zorunlu olsun, diğerleri opsiyonel olsun. Bu durumda createmetodunu alttaki gibi güncelliyoruz.

Classı tamamladık. Artık Builder pattern kullanarak alttaki gibi bir nesne oluşturma işlemi yapabiliriz.

İşte bu kadar!

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.