我想将一个Singleton类的功能继承到另一个Singleton中,但这是不可能的(我知道为什么)。
然后我决定尝试使用委托。编译器没有抱怨,我将只是出于好奇而看看会发生什么!
您可以在下面找到更多信息:
ThrottleBrake
(implementation)ThrottleBrakeImpl
,它扩展了(implementation)上方的界面另一个单例ElectronicThrottleBrakeImpl
,它使用上面的两个,如下一个代码片段所示:
object ElectronicThrottleBrakeImpl: ThrottleBrake by ThrottleBrakeImpl {
override fun throttle(direction: String, value: Int): String {
return ThrottleBrakeImpl.throttle(direction, value)
}}
但是我想知道这是否是一个好习惯。我应该继续这样的项目还是应该找到更好的解决方案?
答案 0 :(得分:1)
实际上,我使用类似的星座来具有可扩展的枚举。
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()
而且我认为也有许多其他人将此文档记录为可扩展枚举,但是我找不到很好的来源(我在防火墙后面)作为良好实践来支持它;-)
我想知道为什么首先需要单身人士。但是,如果它们像枚举,那么我会说这种做法肯定是可以的;-)(否则我会陷入麻烦)