Koray PEKER
Menu
  • Anasayfa
  • Kütüphane
  • Kategoriler
    • Java
    • Spring
    • Tasarım Şablonları
    • Git
    • Maven
    • ORM Çatıları
    • VCS
    • SDLC
    • DevOps
    • Algoritma
    • Eğitim
    • Diğer
  • Hakkımda
Menu

Yegâne (Singleton) Tasarım Şablonu

14 Şubat 201821 Ekim 2018 tarihinde yayımlandı

Yegâne (Singleton) tasarım şablonu,  GoF ‘un(Gang Of Four) oluşturucu tasarım şablonlarından ilkidir. Bu şablonun amacı hazırlayacağınız sınıftan sadece bir nesne oluşmasını sağlamaktır. Bu sayede nesnenin kopyalanmasını yada yeni bir tane oluşturmasını engeller ve nesneye ihtiyaç duyulduğunda  önceden oluşturulan nesneyi çağırır. Singleton tasarım şablonu, diğer tasarım şablonlarında da (Abstract Factory, Builder, Prototype, vs.) kullanılmaktadır. Core java sınıflarında kullanılır. Örneğin java.lang.Runtime, java.awt.Desktop

Bu şablonu uygulamak için yapılması gerekenler

  • Sınıfın birden fazla nesne oluşturmasını engellemek. (private constructor ile)
  • Sınıf içerisinde nesne oluşturan static bir sınıf değişkeni (private static variable)
  • Sınıf içerisinde oluşan nesneyi döndüren public static bir metot. Bu işte dış dünyaya açılış noktasıdır.

Uygulama Çeşitleri

Singleton tasarım şablonunun çeşitli uygulama teknikleri vardır. Mesela Eager initialization, Singleton sınıfının nesnesi tam olarak class loading anında oluşturulur. Lazy initialization’ da nesne elde edilmek istenildiğinde nesne oluşturulur. Static block initialization’ da eager initialization’a benzerdir. Ancak, nesne oluşturulurken istisna oluşabilme durumlarında statik bloğun içinde oluşturulur. Diğer uygulama teknikleri içinde örnekler daha sonra yazacağım.

1. Eager Initialization

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class SingletonExample {
 
    private static final SingletonExample singleton = new SingletonExample();
 
    private SingletonExample(){
 
    }
 
    public static SingletonExample getInstance(){
        return singleton;
    }
 
}

2. Static block initialization

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class SingletonExample2 {
 
    private static final SingletonExample2 singleton;
 
    private SingletonExample2(){
 
    }
 
    static{
        try {
            singleton = new SingletonExample2();
        } catch (Exception e){
            throw new RuntimeException("Nesne oluşturulurken bir hata oluştur");
        }
    }
 
    public static SingletonExample2 getInstance(){
        return singleton;
    }
 
}

3. Lazy Initialization

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class LazyInitSingletonExample {
 
    private static LazyInitSingletonExample instance;
 
    private LazyInitSingletonExample(){
 
    }
 
    public static LazyInitSingletonExample getInstance(){
        if(instance == null){
            instance = new LazyInitSingletonExample();
        }
        return instance;
    }
}

4. Thread Safe Singleton
5. Bill Pugh Singleton Implementation
6. Using Reflection to destroy Singleton Pattern
8. Enum Singleton
9. Serialization and Singleton

2 yorum yapıldı “Yegâne (Singleton) Tasarım Şablonu”

  1. Geri bildirim: Oluşturucu Tasarım Şablonları (Creational Desing Pattern) | Koray PEKER
  2. Geri bildirim: Enumeration nedir ? | Koray PEKER

Bir cevap yazın Cevabı iptal et

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

POPÜLER YAZILAR

  • Bir Yazılımcının Sırt Çantası
  • CI (Continuous integration) ve CD (Continuous Delivery/Deployment)
  • NullPointerException’dan Kaçış
  • İlk işime veda :(
  • Project : Lombok
  • Yük Testi ve SoapUI
  • JAR, WAR, EAR Üçlemesi
  • Enumeration nedir ?
  • Mutable ve Immutable nedir ?
  • REST Mimarisi ve RESTful Servisler

Ara

Son Yazılar

  • Çalışma Masam
  • Apache Kafka
  • Postman API’ları Görselleştirme
  • MongoDB Cheat Sheet
  • Splunk 101 – Giriş
  • Yük Testi ve SoapUI
  • Modern Veri Tabanları
  • Senior Stajyer ?!
  • API Dokümantasyon Önemi ve Swagger
  • Kod Tekrarı(Code Duplication) ve DRY

TAKİP ET

©2023 Koray PEKER