kotlin实现单例模式

kotlin实现单例模式,大体分为两种方式,一种饿汉式单例模式,一种懒汉式单例模式。
1.饿汉式单例模式

在类前面加上object关键字,就实现了饿汉式单例模式:

kotlin 复制代码
object singletonDemo {
}

在kotlin中,使用这种方式基本就能应对大部分的情况。而且这种方式在类加载的时候初始化,还是线程安全的。
补充说明一下:

类加载的时机,或者说类的初始化(两者是类加载到内存中达到可用状态的两个阶段),包括:创建类的实例对象,或者类的静态成员访问,类的反射,父类中的子类初始化的时候,虚拟机特定类。所以并不是程序初始化的时候就会加载所有的类,声明一个类型的变量时也不会加载该类,而是真的使用该类的时候才会去加载。
2.懒汉式单例模式

kotlin中实现双重锁校验的懒汉式单例模式也很简单:

kotlin 复制代码
class SingletonDemo private constructor() {
	companion object {
		val instance: SingletonDemo by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
			SingletonDemo()
		}
	}
}

通过伴生对象实现类似于static的静态变量,同时通过by lazy,实现了属性委托,延迟初始化,即在使用instance属性字段的时候,才会去初始化。同时,由于by lazy是线程安全的,也就实现了多线程的校验功能。

相关推荐
牛奔5 小时前
Go 是如何做抢占式调度的?
开发语言·后端·golang
符哥20085 小时前
C++ 进阶知识点整理
java·开发语言·jvm
小猪咪piggy5 小时前
【Python】(4) 列表和元组
开发语言·python
難釋懷5 小时前
Lua脚本解决多条命令原子性问题
开发语言·lua
CoderCodingNo5 小时前
【GESP】C++ 二级真题解析,[2025年12月]第一题环保能量球
开发语言·c++·算法
独好紫罗兰5 小时前
对python的再认识-基于数据结构进行-a005-元组-CRUD
开发语言·数据结构·python
chilavert3185 小时前
技术演进中的开发沉思-356:重排序(中)
java·开发语言
devmoon5 小时前
为 Pallet 搭建最小化 Mock Runtime 并编写单元测试环境
开发语言·单元测试·区块链·智能合约·polkadot
Coder_Boy_6 小时前
Java开发者破局指南:跳出内卷,借AI赋能,搭建系统化知识体系
java·开发语言·人工智能·spring boot·后端·spring
Mr_Xuhhh6 小时前
介绍一下ref
开发语言·c++·算法