【Java面试指北】单例模式-单线程下的单例模式:

时间:2024-04-10 20:54:04
public class Singleton {
    private static Singleton instance;

    private Singleton() {}

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

几个关键点:

  • static 修饰:表名属于类而不是类对象,不会每生成一个新的类对象都新生成一份。并且可以在不创建类对象的情况下直接调用。
  • 为什么构造函数是private 类型?不然呢,开放了构造函数还怎么单例。
  • 为什么不把单例的逻辑放到构造函数中?在 Singleton() 中调用 Singleton() 么,那不是死循环了。
  • 类中的单例变量是 private 类型的,不能直接访问,要通过 getInstance() 来获取。