kotlin实现单例模式

这篇具有很好参考价值的文章主要介绍了kotlin实现单例模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

object SingletonDemo {
	fun dosomething(){
	}
}

在kotlin中规定,使用object修饰的类只能有一个实例。这种方式基本就能应对大部分的情况,而且这种方式在类加载的时候初始化,还是线程安全的。
使用的时候,直接使用类名.字段名:

SingletonDemo.dosomething()

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

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

通过伴生对象实现类似于static的静态变量,同时通过by lazy,实现了属性委托,延迟初始化,即在使用instance属性字段的时候,才会去初始化。同时,由于by lazy是线程安全的,也就实现了多线程的校验功能。文章来源地址https://www.toymoban.com/news/detail-739638.html

到了这里,关于kotlin实现单例模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【单例设计模式原理详解】Java/JS/Go/Python/TS不同语言实现

    单例模式(Singleton Pattern)属于创建型设计模式,这种模式只创建一个单一的类,保证一个类只有一个实例,并提供一个访问该实例的全局节点。 当您想控制实例数目,节省系统资源,并不想混用的时候,可以使用单例模式。单例有很多种实现方式,主要分为懒汉和饿汉模式

    2023年04月27日
    浏览(93)
  • Android开发:kotlin语言实现简易计算器

    输入两个数字,可选加减乘除操作符,并计算显示对应结果 随系统切换语言 可对结果进行四舍五入操作 界面布局:activity_main.xml文件代码 字符定义:string.xml文件代码 逻辑实现:MainActivity.kt 文件代码 方法一(偷懒): 复制文件到对应位置 方法二: 1. 绘制界面 2. 编写逻辑

    2023年04月08日
    浏览(48)
  • Java单例模式详解--七种单例模式实现+单例安全+实际应用场景

    保证了一个类只有一个实例,并且提供了一个全局访问点。单例模式的主要作用是节省公共资源,方便控制,避免多个实例造成的问题。 实现单例模式的三点: 私有构造函数 私有静态变量维护对象实例 公有静态方法提供获取实例对象 七种单例模式实现 1.静态类:第一次运

    2024年02月04日
    浏览(62)
  • kotlin基础--快速上手kotlin语言开发

    1.1 变量 var表示可变变量,val表示不可变变量,注意并不是常量。变量名写在前面,类型写在后面,编译器如果能推断出你的类型,那么类型是不用声明的 。 编译器自动推断类型。 空安全类型编译器报错 如果还是想给赋初始化值的话 注意:String和String?是两个完全不同的类

    2024年02月15日
    浏览(54)
  • 单例模式有几种写法?【如何实现单例模式?】

    专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录) 文章字体风格: 红色文字表示:重难点★✔ 蓝色文字表示:思路以及想法★✔ 如果大家觉得有帮助的话,感谢大家帮

    2024年02月07日
    浏览(46)
  • 【设计模式学习1】什么是单例模式?单例模式的几种实现。

    单例模式是在内存中只创建一个对象的模式,它保证一个类只有一个实例。 如上图所示,多线程情况下,在时刻T,线程A和线程B都判断single为null,从而进入if代码块中都执行了new Single()的操作创建了两个对象,就和我们当初的单例初衷相悖而行。 1、第一次判空目的:为了缩

    2024年02月15日
    浏览(56)
  • 【设计模式】单例模式、“多例模式”的实现以及对单例的一些思考

    单例模式是设计模式中最简单的一种,对于很多人来说,单例模式也是其接触的第一种设计模式,当然,我也不例外。这种设计模式在学习、面试、工作的过程中广泛传播,相信不少人在面试时遇到过这样的问题:“说说你最熟悉的集中设计模式”,第一个脱口而出的就是单

    2024年02月07日
    浏览(50)
  • 设计模式——C++11实现单例模式(饿汉模式、懒汉模式),与单例的进程

    本文将介绍单例模式,使用C++11实现多个版本的单例模式,分析各自的优缺点。最后提及如何实现一个单例的进程。 单例模式属于创建型模式,提供了一种创建对象的方式。 单例模式确保一个类只有一个实例。通过一个类统一地访问这个实例。 思想:将构造函数设置为私有

    2024年02月09日
    浏览(50)
  • 浅谈单例模式在游戏开发中的应用

    如果在外部想在不同的时间结点、不同的位置访问某类中的成员且想要保持访问时,成员地址唯一。 那么可以考虑将该类声明为 静态类 ,但若是成员中包含公共的数据类型,此时便可以考虑将该类做成一个 单例 。 由于类中的数据,必须在实例化后堆栈才会为其分配变量的

    2024年02月10日
    浏览(34)
  • 设计模式——单例模式8种实现

    1、了解概念: 单例模式是指采用一定的方法保证在整个软件系统种,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。 个人理解:一个类只能实例化一个对象,其他的使用都是引用这个对象。 单例模式的八种实现方式 单例模式的

    2024年02月21日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包