java - 什么是正确的单例实现以及为什么

标签 java design-patterns singleton static-members

java中的两个实现有什么区别,哪个是正确的,为什么?

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

    private Singleton()
    {
        System.out.println("Singleton(): Initializing Instance");
    }

    public static Singleton getInstance()
    {    
        return instance;
    }

}

或者

class Singleton
{
    private static Singleton instance; 

    static
    {
        instance = new Singleton();
    }  

    private Singleton()
    {
        System.out.println("Singleton(): Initializing Instance");
    }

    public static Singleton getInstance()
    {    
        return instance;
    }


}

最佳答案

首先回答你的问题,

据我所知,两个代码片段是相同的。我没看出有什么区别。

但是,正如其他答案所建议的,有更好的方法来创建单例实现。但这对于你的问题来说有点偏离主题,而互联网(谷歌)是你找到答案的最好 friend 。

关于java - 什么是正确的单例实现以及为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22119237/

相关文章:

java - 有没有办法将值传递给构造函数中的特定项?

java - 是否有提供 LDAP 样式解析的独立 Java 库?

java - 为什么我们在策略设计模式中需要上下文类?

c# - 当编译时类型未知时使用泛型

android - 使用进度对话框作为单例类是好习惯吗

java - 如何使 Java .jar 文件在任何环境中都能自动找到

java - 二维数组 | java

c# - 设计模式命名和说明 : Provider, 服务,经纪人

c# - 如何在 C# 中实现正则表达式单例的常见行为?

PHP 单元测试 : Is it possible to test for a Fatal Error?