Kotlin-在singleton中委派而不是继承



我想将Singleton类的功能继承到另一个Singleton中,但这是不可能的(我理解原因(。

然后我决定尝试使用委派。编译器并没有抱怨,我只是想看看会发生什么
您可以在下面找到更多信息:

  1. 接口ThrottleBrake(实现(
  2. 扩展上述接口的单例ThrottleBrakeImpl(实现(
  3. 另一个单独的ElectronicThrottleBrakeImpl使用了以上两种方法,如下一个代码片段所示:

    object ElectronicThrottleBrakeImpl: ThrottleBrake by ThrottleBrakeImpl {
    override fun throttle(direction: String, value: Int): String {
    return ThrottleBrakeImpl.throttle(direction, value)
    }}
    

但我想知道这是否是一个好的做法。我应该继续这样的项目,还是应该找到更好的解决方案?

实际上,我使用类似的星座来拥有类似可扩展枚举的东西。

enum class NonExtendable {
A, B
}

变为:

object Extendables {
object A : Extendable by ExtendableImpl()
object B : Extendable by ExtendableImpl()
}
interface Extendable
class ExtendableImpl : Extendable

并且我现在能够传递额外的~enum值C,如下所示:

object C : Extendable by ExtendableImpl()

我想很多其他人也将其记录为可扩展枚举,但我找不到一个好的来源(我在防火墙后面(来支持它作为良好的实践;-(

我想知道你为什么一开始就要求单身。但如果它们像enum,那么我会说这种做法绝对可以;-((否则我会惹上麻烦(

最新更新