İçeriğe geç

Singleton Tasarım Kalıbı – Uygulama

Merhaba arkadaşlar,

Bu yazıda bir önceki yazıda en basit hali ile oluşturduğumuz Singleton Tasarım Kalıbının uygulamasını yapacağız.

Ne demiştik? Singleton tasarım kalıbı ile sadece bir nesne oluşur. Bunun testini nasıl yaparız?

Nesne oluşması için kendi constuctorına, yani yapılandırıcısına ihtiyaç duyar. Yapılandırıcıya erişemiyorsa ilgili nesne yapılandırılamaz ve dolayısı ile de oluşturulamaz. O zaman biz de Constructor a girildiğinde consola bir çıktı yazmasını isteyebiliriz. Bu sayede kaç tane çıktı görürsek o kadar nesne oluşmuştur diyebiliriz.

Yapalım.

public class Singleton {

    private static Singleton singleton  = new Singleton();

    private Singleton() {
        System.out.println("Ben oluştum");
    }

    public static Singleton getSingleton() {
        return singleton;
    }
}

Peki test için birkaç kere nasıl çağrım yapabiliriz. Bir döngü içersinde nesne oluşturmayı deneyebiliriz.

public class Main {

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++){
            main.java.designpatterns.singleton.Singleton singleton = Singleton.getSingleton();
        }
    }
}

Peki kaç kere oluşturmayı denedik. Onu da tutan sayi diye bir değişken ekleyelim ve getsingleton metodu içersine her girdiğinde önce arttıralım ardından da yazdıralım.

public class Singleton {

    private static Singleton singleton  = new Singleton();

    private static int sayi = 0;

    private Singleton() {
        System.out.println("Ben oluştum");
    }

    public static Singleton getSingleton() {
        
        sayi++;

        System.out.println(sayi);
        
        return singleton;
    }
}

Görüldüğü gibi uygulama sürekli bir istekte bulunuyor ama sadece bir kere consturtor a giriliyor.

Bir de bu işlemi debug yaparak göstermek istiyorum. For döngüsünün olduğu yere bir debug koyalım. Ardından da getSingleton metodunun başına, Bir tane constuctora ve Bir de private singleton değişkenine bir debug koyalım ve uygulamamızı yeniden çalıştıralım.

Uygulamayı çalıştırıp deneyiniz.

Görüldüğü gibi singleton üzerindeki metodu çağırmama rağmen, daha bu metoda girmeden static değişken yüklendi ve burada new Singeton dediğimiz için de consturctor a gitti. Burada consola “Ben oluştum” yazdırdık. Ancak bu adımdan sonra metoda girip sayıyı arttırdı ve ekrana yazdırmaya başladı. Döngünün sonraki her adımı için ise sadece sayı arttırıldı.

Tarih:JavaTasarım Kalıpları

İlk Yorumu Siz Yapın

Bir cevap yazın

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