Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Etkinliklerim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • RabbitMQ
  • Hibernate
  • JSP
  • Java 21
  • Java 8
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
Design Patterns

Design Patterns – Builder Pattern Nedir?

Paylaş

Bu yazıda Builder Pattern nedir? Hangi amaç ile kullanılır? Ne gibi durumlarda kullanmamız gerekir? Konularından bahsedeceğim.

Bir nesne oluşturduğumuzda sınıfımızın içerisindeki değişkenlerden ürettiğimiz constructor metod bize gereksiz gelen parametrelerden oluşabilir. Nesne yaratılırken bu constructor metod içerisindeki kadar parametre alması gerekmekte. Bu yapı zaman zaman bize uymayabilir o yüzden farklı parametreler alan ya da istediğimiz kadar parametre alabilen metod oluşturumunda Builder Pattern imdadımıza yetişmektedir. Bir örnek ile açıklayalım.

Nesnemizin alacağı parametrelere göre değişkenlik gösteren metod oluşturma yöntemidir. Araba nesnemiz olsun. Arabamızın farklı özellikleri bulunabilir arabaya göre her özelliği doldurulmayabilir o yüzden arabanın özelliğine göre parametre alacak metodlar oluşturacağız. Normalde yaptığımız araba nesnemize bir bakalım ve alabileceği özellikleri yazalım.

Araba(int yas) { ... }        
Araba(int yas, boolean klima) { ... }    
Araba(int yas, boolean klima, boolean ekran) { ... }    
Araba(int yas, boolean klima, boolean ekran, boolean abs) { ... }

Araba nesnemizi özelliklerine göre parametre alıp almamasına göre doldurmak zorunda kalmaktayız. Yani;

Araba araba = new Araba(BMW);
araba.setYas(true);
araba.setKlima(true);
araba.setEkran(true);

Başka bir araba nesnemizin ekran özelliği olmadığını varsayarsakta ilgili parametre false olarak doldurmak zorunda kalmaktayız. Gerekmeyen parametreleri yazmak zorunda kalmadığımız Builder Patternimizi oluşturalım.

public class Araba {
  private int yas;
  private boolean klima;
  private boolean ekran;
  private boolean abs;

  public static class Builder {
    
    private int yas;
    private boolean klima = false;
    private boolean ekran = false;
    private boolean abs = false;

    public Builder(int yas) {
      this.yas = yas;
    }

    public Builder klima(boolean b) {
      klima = b;
      return this;
    }

    public Builder ekran(boolean b) {
      ekran = b;
      return this;
    }

    public Builder abs(boolean b) {
      abs = b;
      return this;
    }

    public Araba build() {
      return new Araba(this);
    }
  }

  private Araba(Builder builder) {
    yas = builder.yas;
    klima = builder.klima;
    ekran = builder.ekran;
    abs = builder.abs;
  }
}

Yukarıda yaptığımız kod bloğunda parametrelerimizin başlangıç değerlerini belirledik artık bundan sonra araba nesnemizin alacağı özellikleri yazmamız yeterli olacaktır.

Araba araba = new Araba.Builder(BMW)
                       .klima(true)
                       .abs(true)
                       .build();

Builder Pattern ile ilgili nesnemizin parametre alacak değerlerini girmemiz yeterli olmaktadır.

Tags:

Builder Patterndesign patterntasarım kalıpları

Paylaş

Diğer Yazılar

blank
Previous

Design Patterns – Prototype Pattern Nedir?

javb
Next

Java 8 Stream API Nedir? Kullanım Örneği

Next
javb
30 Nisan 2018

Java 8 Stream API Nedir? Kullanım Örneği

Previews
15 Şubat 2018

Design Patterns – Prototype Pattern Nedir?

blank

One Comment

  1. Oğuzhan GÜMÜŞ dedi ki:
    22 Mart 2019, 09:35

    Çok başarılı anlatım teşekkürler.

    Yanıtla

Bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

blank

Design Patterns – Template Metot Pattern Nedir?

blank

Design Patterns – Prototype Pattern Nedir?

blank

Design Patterns – Singleton Pattern Nedir?

blank

Design Pattern – Factory Pattern Nedir?

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Cloud
Node.js
Java 24
Android
Struts
Röportaj
Gradle
Amazon Web Services
Vue.js
Video
Redis
Spring Boot 3.0
Debezium
Mikroservis Mimarisi
Spring Native
Spring Cloud Stream
Etkinlikler
XCode
JPA
Objective C
iPhone Uygulama Geliştirme
PostgreSQL
Spring Security
MongoDB
Java 21
Spring Data
Apache Kafka
Yaptığım Projeler
Servlet
Git
Maven
Design Patterns
DevOps
Linux
Spring Jdbc Template
RabbitMQ
JDBC
PrimeFaces
Manset
Google
Spring
Spring MVC
Spring Cloud
OCA Java SE 8
Quarkus
Spring Core
Microsoft
Veritabanı
Java SE
Tanıyalım
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github
  • Etkinliklerim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • RabbitMQ
  • Hibernate
  • JSP
  • Java 21
  • Java 8
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale