当前位置: 首页 > news >正文

【Kotlin设计模式】Kotlin中单例模式

前言

单例模式(Singleton Pattern),是确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。在 Android 中,有许多系统服务和 API 使用了单例模式,比如:

Context: 通过getApplicationContext() 获取到的进程中全局唯一Context上下文对象。

SharedPreferences: 通过 getSharedPreferences()获取 ,使用单例模式来管理应用程序中的持久化数据。在进程中是全局唯一的。

还有一些常用的系统服务管理类,比如WindowManagerWifiManagerConnectivityManager等等


实现

Kotlin中实现单例的方式比较简单,它提供了关键字object声明单例模式,编译器会自动确保实例的唯一性和线程安全性。


object Singleton {private const val name = "Ho"fun showName() {println("My name is: $name")}
}Singleton.showName()

正常开发中,有些功能需要在单例类中初始化,在init代码块中进行操作即可。

object Singleton {private const val name = "Ho"//做初始化操作init {println("Singleton class invoked.")}fun showName() {println("My name is: $name")}
}

在某些情况下,我们希望实现延时加载单例,只有在第一次使用的时候再进行创建,Kotlin中提供了by lazy来实现懒加载。


class LazySingleton private constructor(){private  val name = "Ho"companion object{val instance: LazySingleton by lazy { LazySingleton() }}//做初始化操作init {println("LazySingleton class invoked.")}fun showName() {println("My name is: $name")}
}

总结

Kotlin 的单例模式通过 object 关键字实现,简洁且线程安全。对于需要懒加载的情况,可以使用 by lazy 实现。


http://www.mrgr.cn/news/3819.html

相关文章:

  • Unity | Shader基础知识(第二十二集:两次渲染)
  • Milvus向量数据库-内存中索引简介
  • Eureka Server与Eureka Client详解:服务注册与发现的交互机制
  • 大数据开发工程师面试整理-性能优化
  • Docker详解
  • mongodb备份还原
  • RabbitMQ-消息队列之work使用
  • 秒懂Linux之缓冲区
  • 2024前端面试题-css篇
  • 【Mac】植物大战僵尸杂交版 for Mac(经典策略塔防游戏)游戏介绍
  • 数据结构初阶(1)——算法的时间复杂度和空间复杂度
  • 【Android】报错:XXXDataBinding文件不能自动生成
  • 计算机毕业设计选题推荐-springboot 基于SpringBoot的家电销售展示平台
  • 2024思维导图工具评测:性能、易用性全面对比
  • 算法的学习笔记—从上往下打印二叉树(牛客JZ32)
  • Modbus-TCP——Libmodbus安装和使用(Ubuntu22.04)
  • 写给大数据开发:如何优化临时数据查询流程
  • 项目启动报错:liquibase.lockservice:? - Waiting for changelog lock....
  • 嵌入式和单片机有什么区别?
  • 守护进程是什么?