Android

Kotlin’de Singleton Sınıfı Nasıl Oluşturulur?

Kotlin’de şunları kullanabilirsiniz: nesne bildirimi singleton’u uygulamak için. Ancak, bu nesne anahtar sözcüğünün farkında değilseniz, muhtemelen böyle bir şey yapacaksınız.

Konvansiyonel Singleton

class Singleton private constructor() {

    companion object {
        @Volatile
        private lateinit var instance: Singleton

        fun getInstance(): Singleton {
            synchronized(this) {
                if (!::instance.isInitialized) {
                    instance = Singleton()
                }
                return instance
            }
        }
    }

    fun show() {
        println("This is Singleton class!")
    }
}

fun run() {
    Singleton.getInstance().show()
}
  • private constructor() bunun normal sınıf olarak oluşturulamaması için kullanılır
  • @Volatile ve synchronized() bu Singleton oluşturma işleminin iş parçacığı için güvenli olduğundan emin olmak için kullanılır.

Nesne Bildirimi Singleton

Bu basitleştirilebilir

object Singleton {
    fun show() {
        println("This is Singleton class!")
    }
}

fun run() {
    Singleton.show()
}

Singleton bir sınıf ve aynı zamanda, singleton nesnesine doğrudan kodunuzdan erişebileceğiniz bir singleton örneğidir.

Yapıcı Bağımsız Değişken Singleton

Bu nesne bildiriminin sınırlaması, singleton nesnesini oluşturmak için ona bir yapıcı parametresi iletememenizdir. Bunu yapmak istiyorsanız, yine de ilkini geri kullanmanız gerekir. geleneksel yöntem.

class Singleton private constructor(private val name: String) {

    companion object {
        @Volatile
        private lateinit var instance: Singleton

        fun getInstance(name: String): Singleton {
            synchronized(this) {
                if (!::instance.isInitialized) {
                    instance = Singleton(name)
                }
                return instance
            }
        }
    }

    fun show() {
        println("This is Singleton $name class!")
    }
}

fun run() {
    Singleton.getInstance("liang moi").show()
}

Çözüm

Kişisel olarak basit yardımcı program sınıfı (nesne bildirimi kullanın) ve veritabanı (konvansiyonel singleton yöntemini kullanın – çünkü argümanı iletmek için gereklidir) için singleton kullanıyorum.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Başa dön tuşu