跳到主要内容

实现Java写一个Singleton案例 ?

参考答案:

在Java中,有多种实现单例模式(Singleton Pattern)的方法,其中最常见的是“懒汉式”和“饿汉式”。以下是这两种方法的示例实现:

1. 饿汉式(Eager Initialization)

public class Singleton {
    // 在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快
    private static Singleton instance = new Singleton();

    // 私有构造方法,防止被其他类实例化
    private Singleton() {}

    // 提供全局访问点
    public static Singleton getInstance() {
        return instance;
    }
}

2. 懒汉式(Lazy Initialization)

public class Singleton {
    // 声明一个静态的实例,但不立即初始化
    private static Singleton instance;

    // 私有构造方法,防止被其他类实例化
    private Singleton() {}

    // 提供一个静态方法用于获取实例,如果实例不存在则创建
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

注意:懒汉式在多线程环境下可能存在问题,因为多个线程可能同时检测到instance为null并创建新的实例。为了解决这个问题,我们使用了synchronized关键字来同步getInstance()方法,但这可能会降低性能。因此,在单线程环境下,我们可以省略synchronized关键字以提高性能。

此外,还有其他实现单例模式的方法,如双重检查锁定(double-checked locking)、静态内部类(static inner class)、枚举(enumeration)等。选择哪种方法取决于你的具体需求和场景。