如安在 Kotlin 中创建单例类?

源代码 2024-10-6 12:35:11 67 0 来自 中国
Singleton 是一个全局对象,可以从应用程序的任何地方访问。本文展示了在 Kotlin 中创建它的差异方法。
在 Kotlin 中,您可以利用对象声明来实现单例。但是,假如你不知道这个对象关键字,你大概会做如许的事变。
通例单例

class Singleton private constructor() {    companion object {        @Volatile        private lateinit var instance: Singleton        fun getInstance(): Singleton {            synchronized(this) {                if (!::instance.isInitialized) {                    instance = Singleton()                }                return instance            }        }    }    fun show() {        println("This is Singleton class!")    }}fun run() {    Singleton.getInstance().show()}


  • private constructor()利用,因此不能像往常一样创建类
  • @Volatile并synchronized()用于确保此 Singleton 创建是线程安全的。
对象声明单例

这可以简化为
object Singleton {    fun show() {        println("This is Singleton class!")    }}fun run() {    Singleton.show()}
Singleton是一个类,也是一个单例实例,您可以在此中直接从代码访问单例对象。
构造函数参数单例

此对象声明的限定是您不能将构造函数参数转达给它来创建单例对象。假如你想如许做,你仍然必要利用第一种通例方法。
class Singleton private constructor(private val name: String) {    companion object {        @Volatile        private lateinit var instance: Singleton        fun getInstance(name: String): Singleton {            synchronized(this) {                if (!::instance.isInitialized) {                    instance = Singleton(name)                }                return instance            }        }    }    fun show() {        println("This is Singleton $name class!")    }}fun run() {    Singleton.getInstance("liang moi").show()}结论

我个人将单例用于简朴的实用程序类(利用对象声明)和数据库(利用约定单例方法 - 由于它必要传入参数)。
链接:https://vtsen.hashnode.dev/how-to-create-singleton-class-in-kotlin#heading-conventional-singleton
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-21 21:06, Processed in 0.143079 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表