在 Kotlin 中,你可以使用伴生對(duì)象的 object
關(guān)鍵字來創(chuàng)建一個(gè)單例。由于伴生對(duì)象在類加載時(shí)就被初始化,所以它們是線程安全的,并且只能有一個(gè)實(shí)例。下面是一個(gè)簡(jiǎn)單的示例:
class Singleton {
companion object {
// 使用懶加載的方式初始化單例
val instance: Singleton by lazy {
Singleton()
}
}
}
fun main() {
val singleton1 = Singleton.instance
val singleton2 = Singleton.instance
// 由于單例的懶加載特性,這里的輸出順序可能會(huì)有所不同,但結(jié)果都是相同的
println("singleton1: $singleton1")
println("singleton2: $singleton2")
}
在這個(gè)示例中,我們創(chuàng)建了一個(gè)名為 Singleton
的類,并在其中定義了一個(gè)伴生對(duì)象。伴生對(duì)象中有一個(gè)名為 instance
的屬性,它使用 lazy
關(guān)鍵字進(jìn)行懶加載。這意味著 instance
屬性將在第一次訪問時(shí)才被初始化,從而確保單例的線程安全。
在 main
函數(shù)中,我們分別訪問了兩次 Singleton.instance
,由于單例的懶加載特性,這里的輸出順序可能會(huì)有所不同,但結(jié)果都是相同的。這表明我們成功地實(shí)現(xiàn)了一個(gè)單例模式。