【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 实现。

相关推荐
数据中穿行44 分钟前
迭代器设计模式全方位深度解析
设计模式
数据中穿行1 小时前
观察者设计模式全方位深度解析
设计模式
程序员Terry1 小时前
别老写重复代码了!模版方法模式一次讲透
java·设计模式
数据中穿行1 小时前
建造者模式全方位深度解析
设计模式
数据中穿行1 小时前
组合设计模式全方位深度解析
设计模式
数据中穿行1 小时前
原型设计模式全方位深度解析
设计模式
柏木乃一2 小时前
Linux线程(8)基于单例模式的线程池
linux·运维·服务器·c++·单例模式·操作系统·线程
CRMEB3 小时前
电商项目中订单流程可以使用哪些设计模式?如何开发?
java·设计模式·gitee·开源·php·crmeb
逆境不可逃4 小时前
【从零入门23种设计模式19】行为型之观察者模式
java·开发语言·算法·观察者模式·leetcode·设计模式·动态规划
天若有情6734 小时前
C++设计模式:tur函数——让对象自我裁决的条件选择器
java·c++·设计模式