gpt4 book ai didi

java - 替代地实现单例

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:46 25 4
gpt4 key购买 nike

实现单例设计模式的标准方法是这样的:

public class Singleton {
private static Singleton instance = new Singleton();

public static Singleton getInstance() {
return instance;
}

private Singleton() {}
}

我想知道你是否也可以这样实现它:

public class Singleton {
private Singleton() {}
public final static Singleton INSTANCE = new Singleton();
}

如果是,哪个版本更好?

最佳答案

都没有。在这两种情况下,受信任的消费者都可以通过反射调用私有(private)构造函数。另一个问题是,这些实现不能很好地处理序列化,除非您采取额外的步骤来做到这一点(默认情况下,如果您采用天真的方法,每次 Singleton 被反序列化,它创建一个新实例)。

正确的解决方案是使用定义单个值的 enum

public enum Singleton {
INSTANCE;

// methods
}

来自 Effective Java:

While this approach is yet to be widely adopted, a single-element enum type is the best way to implement a singleton.

关于java - 替代地实现单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18200923/

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