随着我对 Scala 的不断学习,我对 Scala 语言中的一些选择很感兴趣。考虑删除静态类。在 Java 世界中(我来自哪里),静态成员、单例成员和实例成员之间存在明显区别。Java 中一直存在对单例的持续需求,而静态成员无法真正提供帮助。我知道为什么单例可能优于静态成员的主要用例是:
- 能够控制单例对象的实例化。如果加载一个类的实例是资源繁重的,我们想把它推迟到以后,直到它真正需要它。
- 能够在运行时配置单例对象。想象一下在构建时必须读取环境变量并填充我们的单例。如果成员是静态的,则无法做到这一点,因为在类加载时可能不知道该信息。
然而,Scala 的单例实现似乎没有上述好处。看看这里的讨论:http: //pbadenski.blogspot.com/2009/06/design-patterns-in-scala-singleton.html
在我看来,Scala 根本没有解决单例用例。这将是令人失望的。
如果我的理解是正确的,那么下一个问题是:我们如何在 Scala 中启用惰性单例模式?
似乎我们必须与 scala 战斗才能以正确的方式获得单例!
PS:这不是我的博客