Rehber Java Singleton Sınıflar

  • Konuyu başlatan Konuyu başlatan Emnn
  • Başlangıç tarihi Başlangıç tarihi

Emnn

Profesör
Emektar
Müdavim
Katılım
3 Mayıs 2021
Mesajlar
2,233
Çözümler
8
Reaksiyon puanı
1,939
Puanları
358
Merhaba bugün Java programlama dilinde Singleton sınıflardan söz edeceğim.

Öncelikle Singleton sınıf ne demek CHATCPT'den dinleyelim: Java'da "singleton" bir tasarım desenidir ve bir sınıfın yalnızca bir örneğini oluşturmasını sağlar. Singleton tasarım deseni, belirli bir sınıfın yalnızca bir örneğinin olmasını ve bu örneğe küresel bir erişimin olmasını sağlar.
Singleton sınıflarının örneği, uygulama çalıştığı sürece yalnızca bir kez oluşturulur ve daha sonra bu örneğe her yerden erişilebilir. Genellikle tek bir kaynak veya nesnenin paylaşılmasını gerektiren durumlarda kullanılır.

Normal Bir Sınıf ve Sınıf ile Oluşturulan Nesnelerin Bellek Yolları:
Javada Singleton olmayan bir sınıftan nesne oluşturulduğunda, o nesne bellekte işlemler, değişkenler vb. şeyler için bir yer tahsis eder. Bu bellek alanı her yeni nesne için farklı farklı alanlarda tutulur.
Normal bir sınıf örneği:
Java:
public class normalSınıf {

    public normalSınıf()
    {
      
    }
}
Oluşturulan sınıftan üretilen nesnelerin bellekde ki farklı hafıza adresleri:
Java:
normalSınıf n = new normalSınıf();
System.out.println(n.hashCode()); // 2023-06-26 17:44:43.313 4869-4869/com.example.calculator I/System.out: 266307482
normalSınıf n2 = new normalSınıf();
System.out.println(n2.hashCode()); //2023-06-26 17:44:43.313 4869-4869/com.example.calculator I/System.out: 144300235
Göründüğü üzere normal sınıflardan her bir yeni nesne için bellekte farklı bir bölge tahsis edilir. Bu basit programlar için sorun değildir ancak gelişmiş, büyük ve bir çok veriye sahip programlar için sorun oluşturabilir.

Singleton Bir Sınıf ve Sınıf ile Oluşturulan Nesnelerin Bellek Yolları:
Singleton yapısına sahip bir sınıf örneği:
Java:
package com.example.calculator;

public class anaSınıf {

    private static anaSınıf ana_Sınıf = null;

    private anaSınıf()
    {
    }

    public static anaSınıf getInstance()
    {
        if (ana_Sınıf == null)
            ana_Sınıf = new anaSınıf();

        return  ana_Sınıf;
    }
}
Singleton sınıftan üretilen nesnelerin bellekde ki aynı hafıza adresleri:
Java:
anaSınıf a = anaSınıf.getInstance();
System.out.println(a.hashCode()); // 2023-06-26 17:44:43.314 4869-4869/com.example.calculator I/System.out: 26302632

anaSınıf a2 = anaSınıf.getInstance();
System.out.println(a2.hashCode()); // 2023-06-26 17:44:43.314 4869-4869/com.example.calculator I/System.out: 26302632
Göründüğü üzere Singleton sınıflardan üretilen nesneler bellekde sadece bir yer tahsis eder.

Singleton sınıflar farklı değerler alabilirler:
Java:
anaSınıf a = anaSınıf.getInstance();
System.out.println(a.hashCode()); // 2023-06-26 17:44:43.314 4869-4869/com.example.calculator I/System.out: 26302632
a.setYorum("Nesne 1");
System.out.println(a.getYorum()); // 2023-06-26 21:20:39.756 5228-5228/com.example.calculator I/System.out: Nesne 1

anaSınıf a2 = anaSınıf.getInstance();
System.out.println(a2.hashCode()); // 2023-06-26 17:44:43.314 4869-4869/com.example.calculator I/System.out: 26302632
a2.setYorum("Nesne 2");
System.out.println(a2.getYorum()); // 2023-06-26 21:20:39.756 5228-5228/com.example.calculator I/System.out: Nesne 2

Singleton'un temel amacı tek bir örneğin oluşturulması, kaynak kullanımını azaltmak ve nesnenin farklı yerlerde tekrar tekrar oluşturulmasının önüne geçmektir.

Github Adresim: Eminkrkt - Overview
 
Üst