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