gpt4 book ai didi

inheritance - Kotlin - 委托(delegate)而不是单例中的继承

转载 作者:行者123 更新时间:2023-12-02 13:38:11 25 4
gpt4 key购买 nike

我想将单例类的功能继承到另一个单例中,但这是不可能的(我明白为什么)。

然后我决定尝试使用委托(delegate)。编译器没有提示,我只是为了好奇而看看会发生什么!
您可以在下面找到更多信息:

  • 一个接口(interface)ThrottleBrake ( implementation )
  • 单例 ThrottleBrakeImpl它扩展了上面的接口(interface)(implementation)
  • 另一个单例 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()

    而且我认为还有很多其他人将其记录为可扩展的枚举,但我找不到一个好的来源(我在防火墙后面)来支持它作为一种好的做法;-)

    我想知道为什么你首先需要单例。但是如果它们像枚举,那么我会说这种做法绝对可以;-)(否则我会让自己陷入困境)

    关于inheritance - Kotlin - 委托(delegate)而不是单例中的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51536448/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com