欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

单身数字_完美单身

发布时间:2023/12/3 57 豆豆
生活随笔 收集整理的这篇文章主要介绍了 单身数字_完美单身 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

单身数字

我不时遇到一些Java程序员,他们不确定他们应该如何正确实现Singleton模式。 (如果您不知道什么是Singleton,请尝试Wikipedia: Singleton模式 )。

我并不是在谈论在线程环境中的正确实现。 但是,使用最常见的实现,您可以在Internet上找到所需的内容,可以轻松创建任意多个单例。

试想一下,您具有以下常见的单例实现:

public final class NonSafeSingleton implements Serializable {private static final NonSafeSingleton INSTANCE = new NonSafeSingleton();private NonSafeSingleton() {}public static NonSafeSingleton getInstance() {return INSTANCE;} }

现在专注于可序列化的单词。 再想一秒钟…是的,您是对的。 如果您通过RMI发送这些东西,您将获得第二实例。 甚至需要执行一些内存序列化,反序列化和kaboom操作! 您刚刚取消了一般的Singleton合同。 那样不是很好。 但是如何解决呢? 通常,我使用两种方法:

  • 困难的方式(或者您使用1.4或更旧的Java)
    您需要在Singleton类中实现readResolve方法。 这个小东西用来覆盖已经创建的序列化机制。 您返回的内容将代替序列化产生的数据(有关详细信息,请参见: Serializable Javadoc )。 只需在此处返回您的实例: ...protected Object readResolve() throws ObjectStreamException {return INSTANCE;} ...
  • 简单方法(是的,我使用的是1.5或更高版本)
    将您的单例类更改为枚举,并删除私有构造函数和getInstance方法。 是的,真的就是这么简单。 那么您可以免费获得此功能。 public enum SafeSingleton implements Serializable {INSTANCE; }
  • 在实施下一个Singleton时,请记住这一点。 如果大量使用RMI,可以使您的生活更轻松。

    参考:我们的JCG合作伙伴 Marek Piechut在《 发展世界 》上的完美单身女性。

    相关文章 :
    • Java中可怕的双重检查锁定习惯用法
    • Java Secret:使用枚举构建状态机
    • 依赖注入–手动方式
    • Java泛型快速教程
    • JVM如何处理锁

    翻译自: https://www.javacodegeeks.com/2011/08/perfect-singleton.html

    单身数字

    总结

    以上是生活随笔为你收集整理的单身数字_完美单身的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。