返回

单例模式的奥秘:揭开 Java 中创建唯一实例的秘诀

后端

单例模式:一个类,一个实例

单例模式是一种设计模式,它确保一个类只能有一个实例。这种模式在需要控制对特定资源的访问或在整个应用程序中共享状态的情况下非常有用。

Java 中的单例实现

在 Java 中,我们可以通过两种主要方法实现单例模式:

  1. 懒汉模式: 只在首次需要实例时才创建实例。
  2. 饿汉模式: 在类加载时就创建实例,无论是否需要。

饿汉模式

这种模式通过在类加载时创建实例来确保线程安全。代码如下:

public class Singleton {
    private static Singleton instance = new Singleton();
    private Singleton() {}

    public static Singleton getInstance() {
        return instance;
    }
}

懒汉模式

懒汉模式在首次需要实例时才创建实例,从而提高了效率。代码如下:

public class Singleton {
    private static Singleton instance;
    private Singleton() {}

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

线程安全考虑

懒汉模式需要考虑线程安全问题。为了解决这个问题,我们可以使用 synchronized 同步 getInstance() 方法,如下所示:

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

何时使用单例模式

单例模式适用于以下场景:

  • 数据库连接池等资源的集中管理
  • 日志记录系统等共享状态的维护
  • 全局配置和设置的存储

结论

单例模式是 Java 中一个强大的设计模式,它允许我们控制实例化并确保唯一性。通过理解懒汉模式和饿汉模式的不同方法,我们可以选择最适合我们应用程序需求的实现。无论是需要线程安全还是更高的效率,单例模式都提供了一种可靠的方式来处理对共享资源的访问。