gpt4 book ai didi

scala - 如果单例如此糟糕,为什么 Scala 为它们提供语言支持?

转载 作者:行者123 更新时间:2023-12-03 23:26:37 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
Why are singleton objects more object orientated?



为什么 Scala 有对单例反模式的语言支持?如果 Scala 继承了 static来自 Java 的关键字, object 的合法用例是什么?关键字会被留下?

最佳答案

至少有一个前期差异,即 object在 Scala 中实际上是一个对象(即一个实例),而不是在 Java 中它只是在类本身上调用的方法。

这意味着它避免了关于单例的主要提示之一——因为它是一个实例,它可以被传递并连接到方法中,因此可以在测试等期间被替换为其他实现。如果有的话,它是推荐的单例替代品 - 有一个带有 getInstance() 的类方法返回默认的单个实例。

也就是说,我认为单例反模式更多的是关于设计而不是语言特性。如果您构建您的代码库,以便在大多数类中隐式连接一些整体依赖项,那么您将在更改它时遇到问题 - 无论语言功能如何。
objects 有合法用例在 Scala 中(例如,将 case objects 用于 messages to Actors ,或者让其中几个将 sealed trait 扩展为 alternative to enums )。语言特性可以被滥用,但在我看来,它不如 Java 的 static 容易被滥用。 ,而且更有用。

关于scala - 如果单例如此糟糕,为什么 Scala 为它们提供语言支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11755826/

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