Java编程中的私有构造函数和Singleton类

众所周知,构造函数的主要作用是现在实例化一个类对象(如果我们将构造函数设为私有的话),那么我们将其调用限制为仅在定义一个类时,而不是在其他某个类中。

现在,Java中的单例类已定义为限制类实例化并确保JVM中仅存在该类实例的类。第一次实例化单例类后,新变量也指向创建的第一个实例。

为了创建单例类,我们可以使用私有构造函数的概念,因为它也仅在定义类时限制了类的实例化。在单例类中,我们使用私有构造函数,以便任何目标类都无法通过调用构造函数直接实例化我们的类,但是,通过调用静态方法将单例类的对象提供给目标类,在该方法中,逻辑仅提供一个单例类的对象已编写/定义。

下面的示例将更好地说明单例类的设计。

示例

public class SingletonClassDriver {
   public static void main(String[] args) {
   
      SingletonClass obj = SingletonClass.getObject();
      SingletonClass obj1 = SingletonClass.getObject();
      System.out.println(obj);
      System.out.println(obj1);
   }
}
class SingletonClass {
   public static SingletonClass obj = null;
      private SingletonClass() {
   }
   public static SingletonClass getObject() {
      if (obj == null) {
         obj = new SingletonClass();
      }
      return obj;
   }
}

输出结果

SingletonClass@f6a746
SingletonClass@f6a746