kotlin 单例类
时间: 2024-08-03 19:00:47 浏览: 77
Kotlin 中的单例模式是一种设计模式,它保证一个类只有一个实例,并提供全局访问点。在 Kotlin 中创建单例有多种方法,以下是常见的几种:
1. **静态初始化块**: 使用 `object` 关键字创建一个顶级类,内部有一个不可变的对象,这就是单例。例如:
```kotlin
object Singleton {
// 单例类的静态成员和函数
}
```
2. **延迟加载单例** (Lazy Initialization): 如果需要在首次使用时才初始化,可以使用 `val` 和 `Lazy` 结合,如:
```kotlin
val lazySingleton by Lazy { SingletonClass() }
```
3. **单例工厂方法**: 创建一个工厂类,提供获取单例的方法,隐藏其实例细节。这种方法不适用于懒加载,因为每次请求都会创建新的实例:
```kotlin
class SingletonFactory {
companion object {
fun getInstance(): SingletonClass = SingletonInstance()
}
}
class SingletonClass {}
```
4. **构造函数限制**: 只允许从静态方法创建实例,防止意外创建多个实例,但这不是真正的单例,仅能避免非预期的实例创建。
5. **运用 `kotlin@property delegate`**: 类似于工厂方法,通过委托属性到静态方法。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)