美文网首页kotlinjs css htmlJAVA技术
如何在 Kotlin 中创建单例类?

如何在 Kotlin 中创建单例类?

作者: BlueSocks | 来源:发表于2022-08-03 15:51 被阅读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()使用,因此不能像往常一样创建类
  • @Volatilesynchronized()用于确保此 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

相关文章

  • 如何在 Kotlin 中创建单例类?

    Singleton 是一个全局对象,可以从应用程序的任何地方访问。本文展示了在 Kotlin 中创建它的不同方法。...

  • kotlin精讲-第4章(5)kotlin Object关键字

    创建单例 Java中的单例 什么是单例?单例是一种设计模式,用来保证某一个类只有一个实例。在Kotlin中,Obj...

  • kotlin学习笔记

    kotlin基础知识 基础语法 kotlin中的特殊语法 object创建匿名内部类的写法kotlin中声明单例的...

  • 浅谈kotlin和java的不同之处

    kotlin的数据类代替java的setter和getter写法。kotlin中的object代替java中的单例...

  • 单例模式、异常、模块

    单例模式 创建单例-保证只有1个对象 创建单例时,只执行1次init方法 目的 —— 让 类 创建的对象,在系统中...

  • kotlin-第三章(类与对象)

    构造函数 访问修饰符 伴生对象 单例类 动态代理 kotlin中特有的类 09:kotlin的构造函数 kotli...

  • Kotlin 单例模式与实现原理

    前言 单例模式顾名思义线程中进程中创建类的唯一实例。 Object 实现饿汉式 Kotlin 就这么清爽,我们反编...

  • flutter之网络请求Dio

    创建Dio单例类 创建全局的dio单例类,不需要每次请求都创建Dio对象,节省系统开支创建NetManager类 ...

  • [Kotlin Tutorials 4] Kotlin中的单例实

    Kotlin中的单例实现 单例模式需要保证类只存在一个实例, 通常用来节约资源或者保证一致的状态. 单例的实现首先...

  • 单例模式

    特点 单例类只有1个实例对象 该单例对象必须由单例类自行创建 单例类对外提供一个访问该单例的全局访问点 结构 单例...

网友评论

    本文标题:如何在 Kotlin 中创建单例类?

    本文链接:https://www.haomeiwen.com/subject/zctewrtx.html