gpt4 book ai didi

java - 关于辛格尔顿的事

转载 作者:行者123 更新时间:2023-12-03 22:59:03 25 4
gpt4 key购买 nike

所以我们最近介绍了单例模式,从那以后我发现它有很多很好的用途,但只有一件非常小的事情让我烦恼。我注意到在我看到的每个单例模式示例中,标准的 getInstance() 方法如下所示:

    private static Singleton instance = null;

public static Singleton getInstance() {
if ( instance == null )
instance = new Singleton();
return instance;
}

我想知道的是,检查实例变量是否为空是否有意义?

如果您直接将实例变量分配给一个新的 Singleton 实例并像这样返回它,它会工作吗:

    private static Singleton instance = new Singleton();

public static Singleton getInstance() {
return instance;
}

很抱歉,如果这个问题看起来是在浪费时间,但我只是想知道是否有任何理由说明为什么第一个示例在所有地方都被使用。

感谢您的宝贵时间。

编辑:忘记将方法设为静态。

最佳答案

两者都是创建单例实例的有效方法。前者称为延迟初始化,后者称为急切初始化

如果单例实例的创建成本,延迟初始化会有所帮助。在这种情况下,仅在需要时才创建单例实例。

另一方面,急切初始化默认是线程安全的

关于java - 关于辛格尔顿的事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22298877/

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