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

在Java中使用枚举单例有什么用?

发布时间:2020-12-15 00:43:40 所属栏目:Java 来源:网络整理
导读:当Gang of four引入单例模式时,他们还必须解释,为什么不使用静态类字段和方法.原因是:继承的可能性.对于 Java来说它有意义 – 我们通常不能继承类字段和方法. 后来出现了“Effective Java”一书.我们现在知道反射的存在破坏了私有构造函数的单例类的奇点.制
当Gang of four引入单例模式时,他们还必须解释,为什么不使用静态类字段和方法.原因是:继承的可能性.对于 Java来说它有意义 – 我们通常不能继承类字段和方法.

后来出现了“Effective Java”一书.我们现在知道反射的存在破坏了私有构造函数的单例类的奇点.制作真正的SINGLEton的唯一方法是将其作为枚举的单个项目.尼斯.我这样做了一些自己.

但问题仍然存在:虽然我们不能继承枚举,但这个单身人士的用途是什么?为什么我们不使用这些旧的好的静态/类字段和方法?

编辑.感谢@ bayou.io我发现在https://softwareengineering.stackexchange.com/a/204181/44104中有一个代码可以欺骗枚举,并再次创建枚举单例的两个示例.那里也提到了其他问题.那么,也没有必要使用枚举而不是通常的单例类模式?顺便说一下,到现在为止所提到的所有枚举,也适用于单身人士课程.

解决方法

这个单身人士有什么用?为什么我们不使用这些旧的好的静态/类字段和方法?

因为枚举是一个对象,所以它不仅可以传递,还可以实现接口.

此外,由于我们正在上课,我们可以使用各种类可用的不同公共/私人选项.

所以在实践中,我们可以创建一个实现接口的单例,然后在我们的代码中传递它,并且调用代码不是更明智的.我们也可以将enum类包设为私有,但仍将它传递给其他期望接口的包中的其他类.

如果我们使用静态方法版本,那么调用类必须知道这个对象是一个单例,我们的单例类必须是公共的,所以其他类可以看到它并使用它的方法.

(编辑:李大同)

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

    推荐文章
      热点阅读