İçeriğe geç

Singleton Tasarım Şablonu

Spread the love

Bu yazıyı okumadan önce buradaki yazıyı okumanız gerekmektedir.
Bazı şartlar altında bir nesneden sadece bir adet oluşturulması gerekir. Örneğin database bağlantısı bir defa oluşturulmalı ve kullanılmalıdır. Bunun gibi durumlarda singleton tasarım şablonu kullanılır. Bu nesne öncelikle static instance değişken olarak tanımlanır. Ve bunu kontrolü yapabilmek için bir nesne daha oluşturulur.

1
2
3
4
        public class Singleton {
  private static Singleton instance = null ;
  private static Object lock = new Object(); 
}

Başka sınıfları new Singleton() methodu ile oluşturumamaları için constructor private yaparak engellenir.

1
2
3
  private Singleton(){
    System.out.println("Singleton");
  }

Singleton classında oluşturulan tek nesneye ulaşabilmek için instance() methodu kullanılır. Fakat bu method’ta instance bir kere oluşturulması için bazı kontroller yapılır.

1
2
3
4
5
6
7
8
9
10
11
  public static Singleton instance(){
    if(instance == null)
    {
      synchronized (lock) {
        if(instance == null){
          instance = new Singleton();
        }
      }
    }
    return instance;
  }

Son olarak print fonksiyonu ekleyerek class’ı tamamlıyoruz.

1
2
3
  public void printThis(){
    System.out.println(this);
  }

Şimdide Singleton test etmek için main class’ını yazıyoruz.

1
2
3
4
5
6
7
8
9
10
  public static void main(String[] args) {
    Singleton singleton = Singleton.instance();
    Singleton singleton1 = Singleton.instance();
    Singleton singleton2 = Singleton.instance();
    Singleton singleton3 = Singleton.instance();
    singleton.printThis();
    singleton1.printThis();
    singleton2.printThis();
    singleton3.printThis();
  }

Console çıktısı

1
2
3
4
5
Singleton Oluşturuldu
Singleton@4554617c
Singleton@4554617c
Singleton@4554617c
Singleton@4554617c
Tarih:Yazılım

İlk Yorumu Siz Yapın

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.