kotlin 单例模式
时间: 2024-12-19 10:12:51 浏览: 9
Kotlin中的单例模式是一种设计模式,它保证一个类只有一个实例,并提供全局访问点。在Kotlin中,有几种常见的创建单例的方式:
1. **静态工厂方法**:
```kotlin
class Singleton {
companion object INSTANCE : Singleton() // 使用companion object来持有唯一实例
fun getInstance(): Singleton { return INSTANCE } // 获取该实例
}
```
这样做可以防止外部直接new Singleton,确保了只有一个实例。
2. **懒汉式单例(线程安全)**:
```kotlin
lazy val SINGLETON: Singleton = Singleton() // 使用lazy关键字保证只在第一次请求时初始化
```
3. **双重检查锁定**:
这种方式在多线程环境下更复杂一些,通过双重检查锁来实现线程安全:
```kotlin
private volatile var instance: Singleton? = null
fun getInstance(): Singleton {
if (instance == null) {
synchronized(this) {
if (instance == null) {
instance = Singleton()
}
}
}
return instance!!
}
```
其中`volatile`关键字确保了对`instance`的可见性和同步。
4. **构造函数私有化+内部类单例**:
```kotlin
class Singleton(private constructor()) { ... }
object SingletonObject : Singleton() // 内部类访问私有构造函数创建唯一实例
fun getInstance(): Singleton { return SingletonObject }
```
这种方式利用了Kotlin的特性,保证了构造函数不可见,提高了线程安全性。
阅读全文