Singleton Design Pattern 和 Java 中的 Singleton Object 有什么区别?

What is the difference between Singleton Design Pattern and Singleton Object In Java?

这是最近在采访中被问到的问题。 根据我的说法,通过单例模式我们可以实例化单例对象。但是,我想知道我说的对不对。

你是对的, 单例设计模式用于实例化单例对象:

SingleObject class provides a static method to get its static instance to outside world. SingletonPatternDemo, our demo class will use SingleObject class to get a SingleObject object. source

代码如下所示:

public class SingleObject {

    //create an object of SingleObject
    private static SingleObject instance = new SingleObject();

    //make the constructor private so that this class cannot be
    //instantiated
    private SingleObject() {
    }

    //Get the only object available
    public static SingleObject getInstance() {
        return instance;
    }

    public void showMessage() {
        System.out.println("Hello World!");
    }
}

要调用 SingleObject class:

public class SingletonPatternDemo {

    public static void main(String[] args) {
        //illegal construct
        //Compile Time Error: The constructor SingleObject() is not visible
        //SingleObject object = new SingleObject();

        //Get the only object available
        SingleObject object = SingleObject.getInstance();

        //show the message
        object.showMessage();
    }
}

因此,单例设计模式描述了如何使用单例对象。 WikiLink

请记住,单例实际上是伪装的全局变量。 因此单例被认为已被弃用。

单例模式是路线图。 Singleton Object 实际上就是走那条路。

并且您可以驾车、步行和 运行 通过该路线。如果你开车,你可以使用汽车、卡车(或)任何其他方式。

Single Pattern 是一种做某事的方式(或)方法。您可以使用任何语言、计算机(或)平台来实际实现该单例对象。

Singleton_design_pattern 是一种设计模式,它将 class 的实例化限制为一个对象。当只需要一个对象来协调整个系统的动作时,这很有用。

Singleton对象是一个单独的对象,它是通过实现Singleton方法创建的。

实现这个(TRUE Singleton),

  1. 确保您的 class 是 final。其他人不能子class它并创建一个实例
  2. 将你的单例对象设为private static final
  3. 提供private构造函数和publicgetInstance()方法。
  4. 确保此单例 class 仅由一个 ClassLoader 加载
  5. 覆盖 readResolve() 方法和 return 相同的实例。

为了有效实施 Singleton,也请参考这个 SE 问题。

What is an efficient way to implement a singleton pattern in Java?