Java单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在Java中,单例模式的实现有多种方法,每种方法都有其优缺点。以下是一些常见的实现方式及其内存管理特点:
public class Singleton {
private static final 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;
}
}
getInstance()
方法时创建,节省了启动时间,但存在线程安全问题。如果多个线程同时访问,可能会创建多个实例。public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
getInstance()
方法时创建,节省了启动时间。public enum Singleton {
INSTANCE;
// 其他方法
public void someMethod() {
// 方法实现
}
}
public class Singleton {
private Singleton() {}
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
getInstance()
方法时创建,节省了启动时间。由于使用了静态内部类,只有在需要时才加载SingletonHolder
类,因此实现了延迟加载。选择哪种实现方式取决于具体的应用场景和需求。