1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| 在 Kotlin 里,object 定义的类就是 单例。
1️⃣ 基本概念 object MySingleton { val name = "单例" fun sayHello() = println("Hello from $name") }
特点:
全局唯一:整个程序中只有一个实例。
懒加载:第一次访问时才初始化。
线程安全:初始化本身是线程安全的,不需要额外加锁。
调用:
fun main() { MySingleton.sayHello() println(MySingleton.name) }
不能使用 MySingleton() 创建新实例
所有属性和方法都属于同一个实例
2️⃣ 使用场景
工具类(类似 Java 的静态方法集合)
全局管理类(配置、状态管理)
单例模式的对象(服务、控制器等)
3️⃣ 对比 Java 单例
Java 单例常见写法:
public class MySingleton { private static final MySingleton instance = new MySingleton(); private MySingleton() {} public static MySingleton getInstance() { return instance; } }
Kotlin 直接写:
object MySingleton { ... }
✅ 语法简单,线程安全,省掉了手动写 static 和锁。
|