MST
星途 面试题库

面试题:Kotlin 中如何实现单例模式并应用于实际案例

在 Kotlin 中,有多种方式实现单例模式,请阐述至少两种实现方式,并说明在一个简单的数据库连接管理场景中,如何使用你所选择的单例模式来确保数据库连接的唯一性和高效使用。
11.3万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试

1. 饿汉式单例

在 Kotlin 中,使用对象声明(object关键字)就可以轻松实现饿汉式单例。饿汉式单例在类加载时就立即创建实例,保证了唯一性。

object DatabaseConnectionManager {
    private val connection: Connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password")

    fun getConnection(): Connection {
        return connection
    }
}

在数据库连接管理场景中,当需要获取数据库连接时,直接调用DatabaseConnectionManager.getConnection()即可,由于object声明的特性,该实例在第一次使用时就已创建且唯一。

2. 懒汉式单例(线程安全)

使用by lazy关键字可以实现懒汉式单例,且by lazy默认是线程安全的。懒汉式单例在第一次使用时才创建实例,提高了资源利用效率。

class DatabaseConnectionManager private constructor() {
    private val connection: Connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password")

    companion object {
        val instance: DatabaseConnectionManager by lazy { DatabaseConnectionManager() }
    }

    fun getConnection(): Connection {
        return connection
    }
}

在数据库连接管理场景中,获取连接的方式为DatabaseConnectionManager.instance.getConnection()。这样只有在首次调用instance时才会创建DatabaseConnectionManager实例及其数据库连接,既保证了唯一性又实现了懒加载。