Kotlin 中的单例抽象 class

Singleton abstract class in Kotlin

我正在按照模板方法设计模式实现一个库。它涉及创建昂贵的 IO 连接。为了避免任何资源泄漏,我想在抽象 class 级别强制执行单例实例。客户端只需要覆盖涉及逻辑的方法即可。

我该如何使用 kotlin?

abstract class SingletonConnection{
     fun start(){ /* code */ }
     fun connect(){ /* code */ }
     abstract fun clientLogic()   
}

如果class A extends this,它应该是单例class。不允许多次初始化。在 kotlin 中如何做?

与其创建摘要 class,不如像这样更改代码:-

object SingletonConnection{
     fun start(){ /* code */ }
     fun connect(){ /* code */ }
     fun clientLogic()   
}

它将提供您希望使用抽象实现的相同实现 class。

同样获取使用此代码的方法:-

SingletonConnection.start()

不幸的是,没有办法强制只有对象(Kotlin 中的单例)可以从 Kotlin 中的某个 abstract/open class 或接口继承。 object 声明只是具有单例模式的常规 class 的语法糖。

我知道这并不多,但我想您可以通过添加文档在一定程度上实现这一点,要求用户单独通过 Singletons 实现此 class。

顺便说一句,为此我会使用接口而不是抽象 class。