Sobes.tech
Junior

Android'de bir sınıfın tek bir örneğini nasıl oluşturursunuz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Android'de sınıfın tek bir örneğini oluşturmak için genellikle Singleton deseni kullanılır.

Singleton uygulamanın birkaç yolu vardır:

  1. Tembel başlatma ve senkronizasyon ile:

    public class Singleton {
        private static Singleton instance;
    
        private Singleton() {
            // Özel yapıcı başka örneklerin oluşturulmasını engeller
        }
    
        public static synchronized Singleton getInstance() {
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }
    }
    
    • Artıları: Çoklu iş parçacığı güvenli.
    • Eksileri: Senkronizasyon, sık çağrıldığında performansı azaltabilir.
  2. Sınıf yüklemesi sırasında başlatma (Eager initialization):

    public class Singleton {
        private static final Singleton instance = new Singleton();
    
        private Singleton() {}
    
        public static Singleton getInstance() {
            return instance;
        }
    }
    
    • Artıları: Açık senkronizasyon olmadan çoklu iş parçacığı güvenli. Daha basit.
    • Eksileri: Nesne, sınıf yüklenirken oluşturulur, kullanılmasa bile.
  3. İki kez kontrol edilen kilitleme:

    public class Singleton {
        private static volatile Singleton instance;
    
        private Singleton() {}
    
        public static Singleton getInstance() {
            if (instance == null) {
                synchronized (Singleton.class) {
                    if (instance == null) {
                        instance = new Singleton();
                    }
                }
            }
            return instance;
        }
    }
    
    • Artıları: Basit senkronizasyona göre daha iyi performans, ihtiyaç duyulduğunda başlatma.
    • Eksileri: Çoklu iş parçacığı ortamında doğru çalışması için volatile gereklidir (Java 5 ve sonrası). Daha karmaşık.
  4. Statik iç sınıf:

    public class Singleton {
        private Singleton() {}
    
        private static class SingletonHolder {
            public static final Singleton INSTANCE = new Singleton();
        }
    
        public static Singleton getInstance() {
            return SingletonHolder.INSTANCE;
        }
    }
    
    • Artıları: Çoklu iş parçacığı güvenli, tembel başlatma, uygulanması kolay. Modern Java sürümlerinde en çok önerilen yöntem.
  5. Enum kullanımı:

    public enum Singleton {
        INSTANCE;
    
        // Sınıfa metodlar ekleyin
        public void doSomething() {
            // ...
        }
    }
    
    • Artıları: En basit ve çoklu iş parçacığı güvenli yol, serileştirmeye ve yansıtmaya karşı dayanıklı. En iyi uygulama olarak kabul edilir.

Uygulama seçimi, performans ve karmaşıklık gereksinimlerine bağlıdır. Android'de genellikle Enum veya statik iç sınıf kullanılır.