How to Create Singleton Class in Java

2025 年 4 月 26 日 | 阅读 3 分钟

在 Java 中,单例类是一个控制对象创建的类。这意味着单例类允许我们在同一时间只创建一个类的对象。它通常用于控制对资源(如数据库连接或套接字)的访问。它确保只建立一个连接,并且一个线程一次只能访问该连接。

然而,如果我们尝试创建单例类的第二个对象,它将指向单例类的第一个实例。在本节中,我们将学习如何在 Java 中创建单例类

要创建单例类,我们必须遵循以下步骤:

  1. 确保类只有一个实例。
  2. 通过以下方式提供对该实例的全局访问:
    1. 将类的所有构造函数声明为私有。
    2. 提供一个返回实例引用的静态方法。惰性初始化概念用于编写静态方法。
    3. 该实例存储为私有的静态变量。

单例类的例子包括Runtime 类、Action Servlet、Service Locator。私有构造函数和工厂方法也是单例类的一个例子。

工厂方法

如果我们通过类名调用一个方法,并且该方法返回相同的类对象,则该类型的方法称为工厂方法。例如:

上述方法返回该类的类型对象。

单例类与普通类的区别

这两个类之间的主要区别在于实例化。要创建普通类的实例,我们使用构造函数。另一方面,要创建单例类的实例,我们使用getInstance() 方法。

通常,我们将类名用作方法名。这可以避免混淆。

优点

  • 单例类控制对资源的并发访问。
  • 它确保在受控状态下,应用程序中只有一个对象可用。

单例类示例

让我们创建一个单例类。

SingletonClassExample.java

让我们创建一个名为 Test 的主类。

Test.java

输出

IT IS AN EXAMPLE OF SINGLETON CLASS.
IT IS AN EXAMPLE OF SINGLETON CLASS.
IT IS AN EXAMPLE OF SINGLETON CLASS.

你是否注意到了 SingletonClassExample 类中的实例化概念?不,让我们来理解它的工作原理。每当我们调用getInstance() 方法时,第一次,它会创建一个名为 s 的类对象并将其返回给变量。变量 s 从 null 变为某个对象,因为它是静态变量。第二次调用getInstance() 方法时,它返回相同的变量 s,而不是创建新对象。

在 Test 主类中,我们通过调用 getInstance() 方法创建了 Singleton 类的三个实例(a、b 和 c)。这里,需要注意的是,对象bc 实际上并没有被创建,而是指向先前创建的对象,即a

另一点需要注意的是,如果我们对对象(例如变量)a 进行任何修改,它也会反映在对象 b 和 c 中。另一方面,如果我们更改对象 c 的变量,它也会在其他对象中反映更改。


下一主题Java 数组长度