gpt4 book ai didi

Scala - 组织单例对象层次结构的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-04 23:07:15 25 4
gpt4 key购买 nike

这是我在 Scala 中遇到的,在 Java 中没有引起任何问题的东西。现在我只是不知道在 Scala 中这样做的正确方法是什么。

问题描述:我有一个 Scala 对象,它表示一个“抽象”对象。它旨在具有单调配置文件,但并非用于实际使用,它只是其子单例常见的一堆定义。所以相反,我想使用它的 child 。那么问题来了:既然不能继承对象,那么普通的单例功能是否应该实现为一个类呢?作为一个抽象类? Trait 不适合我,因为它不能有构造函数。
如果抽象父类可以,那么如果我需要它们,我应该如何访问它的单例(或静态)方法?
我意识到我的设计可能存在缺陷,但由于我有这个问题并且想不出任何明确的答案,所以听听你说的话(包括设计替代方案)很有趣。

最佳答案

你真的应该使用 trait ;不需要构造函数(事实上,它们没有任何意义,因为 scala object 没有构造函数):

这是共同的特征; needA是您需要传递给构造函数的值。也就是说,它是特征的功能所必需的。

trait Common {
def needA: A

def sharedMethod { /* implement me*/ }
}

然后你的模块看起来像这样:
object Mod1 extends Common {
val needA = { /* implement me*/ }
}
object Mod2 extends Common {
val needA = { /* implement me*/ }
}

请注意,它们通过使用 val 指定通用功能所需的值。覆盖 def

关于Scala - 组织单例对象层次结构的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9127493/

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