当前位置:首页 > 编程笔记 > 正文
已解决

kotlin实现单例模式

来自网友在路上 141841提问 提问时间:2023-11-02 21:02:25阅读次数: 41

最佳答案 问答题库418位专家为你答疑解惑

kotlin实现单例模式,大体分为两种方式,一种饿汉式单例模式,一种懒汉式单例模式。
1.饿汉式单例模式
在类前面加上object关键字,就实现了饿汉式单例模式:

object singletonDemo {
}

在kotlin中,使用这种方式基本就能应对大部分的情况。而且这种方式在类加载的时候初始化,还是线程安全的。
补充说明一下:
类加载的时机,或者说类的初始化(两者是类加载到内存中达到可用状态的两个阶段),包括:创建类的实例对象,或者类的静态成员访问,类的反射,父类中的子类初始化的时候,虚拟机特定类。所以并不是程序初始化的时候就会加载所有的类,声明一个类型的变量时也不会加载该类,而是真的使用该类的时候才会去加载。
2.懒汉式单例模式
kotlin中实现双重锁校验的懒汉式单例模式也很简单:

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

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

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"kotlin实现单例模式":http://eshow365.cn/6-30522-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!