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。
我正在按照模板方法设计模式实现一个库。它涉及创建昂贵的 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。