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