加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

斯卡拉的懒惰单身人士

发布时间:2020-12-16 18:26:26 所属栏目:安全 来源:网络整理
导读:随着我对 Scala的学习的继续,我对 Scala语言中的一些选择很感兴趣.考虑删除静态类.在 Java世界中(从我来到的地方),静态成员,单例和实例成员之间存在明显差异. Java中一直存在对单例的持续需求,静态成员无法真正帮助它.我知道为什么单例可能比静态成员更受欢
随着我对 Scala的学习的继续,我对 Scala语言中的一些选择很感兴趣.考虑删除静态类.在 Java世界中(从我来到的地方),静态成员,单例和实例成员之间存在明显差异. Java中一直存在对单例的持续需求,静态成员无法真正帮助它.我知道为什么单例可能比静态成员更受欢迎的主要用例是:

>能够控制单例对象的实例化.如果加载类的实例是资源很重,我们希望将其推迟到以后才能实际需要.
>能够在运行时配置单个对象.想象一下,必须阅读环境变量并在施工时填充我们的单身人士.如果成员是静态的,则无法完成此操作,因为在类加载时可能无法获知该信息.

然而,似乎Scala对单身人员的实施将缺乏上述好处.看看这里的讨论:http://pbadenski.blogspot.com/2009/06/design-patterns-in-scala-singleton.html

在我看来,Scala根本没有解决单例用例.哪会令人失望.

如果我的理解是正确的,那么下一个问题是:我们如何在Scala中启用惰性单例模式?

好像我们必须与斯卡拉战斗才能以正确的方式获得单身人士!

PS:这不是我的博客

解决方法

斯卡拉的单身人士很懒惰.在REPL中尝试以下内容:

scala> object Foo { println("hello") }
defined module Foo

scala> 1+1
res0: Int = 2

scala> Foo
hello
res1: Foo.type = Foo$@37c8ccf4

scala> Foo
res2: Foo.type = Foo$@37c8ccf4

正如您从println中看到的那样,Foo在使用之前不会被初始化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读