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

前言

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

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

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

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

实现

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

kotlin 复制代码
object Singleton {

    private const val name = "Ho"

    fun showName() {
        println("My name is: $name")
    }
}


Singleton.showName()

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

kotlin 复制代码
object Singleton {

    private const val name = "Ho"

    //做初始化操作
    init {
        println("Singleton class invoked.")
    }

    fun showName() {
        println("My name is: $name")
    }
}

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

kotlin 复制代码
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 实现。

相关推荐
likerhood17 小时前
关于三种工厂的设计模式总结
设计模式
榴莲omega17 小时前
第14天:React 工程化与设计模式
前端·react.js·设计模式
雨白1 天前
深入理解 Kotlin 协程 (四):大道至简,于微末的挂起恢复中衍化万物
kotlin
dozenyaoyida1 天前
嵌入式设计模式之策略模式(1)
经验分享·设计模式·策略模式
jinanwuhuaguo1 天前
OpenClaw 2026年4月升级大系深度解读剖析:从“架构重塑”到“信任内建”的范式跃迁
android·开发语言·人工智能·架构·kotlin·openclaw
geovindu1 天前
go: Simple Factory Pattern
开发语言·后端·设计模式·golang·简单工厂模式
我命由我123452 天前
Android Jetpack Compose - SearchBar(搜索栏)、Tab(标签页)、时间选择器、TooltipBox(工具提示)
android·java·java-ee·kotlin·android studio·android jetpack·android-studio
Lsk_Smion2 天前
Hot100(开刷) 之 长度最小的数组--删除倒数第N个链表--层序遍历
java·数据结构·算法·kotlin
陌上丨2 天前
优雅终止线程的设计模式
设计模式
张涛酱1074562 天前
Agent Skills 深入解析:构建可插拔的智能体知识体系
spring·设计模式·ai编程