Java学设计模式之单例模式
单例模式是一种设计模式,旨在确保类只有一个实例,并提供一个全局访问点以访问该实例。这在某些情况下非常有用,例如需要全局访问某些资源或配置时,或者在整个应用程序中只需要一个实例时。
在Java中,实现单例模式有多种方式,其中最常见的包括懒汉式、饿汉式和双重检查锁定。
- 懒汉式(Lazy Initialization):在首次使用时创建实例。
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
- 饿汉式(Eager Initialization):在类加载时就创建实例。
public class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
- 双重检查锁定(Double-Checked Locking):结合了懒汉式和饿汉式的优点,在首次使用时创建实例,并使用双重检查锁定确保线程安全。
public class Singleton {
private volatile static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
这些实现方式都可以确保在多线程环境下获取到的实例是唯一的。需要根据具体情况选择最适合的方式。