是 Java 中最简单的设计模式之一。
public class Singleton {
// 私有静态成员变量,用于保存唯一的实例
private static Singleton instance;
// 私有构造函数,防止外部直接创建实例
private Singleton() {
// 初始化实例的操作
}
// 公共静态方法,用于获取唯一的实例
public static Singleton getInstance() {
// 懒汉式单例模式:如果实例尚未创建,则在第一次调用时创建实例
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
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;
}
}
public class Singleton {
// 私有静态成员变量,用于保存唯一的实例,并在类加载时初始化
private static Singleton instance = new Singleton();
// 私有构造函数,防止外部直接创建实例
private Singleton() {
// 初始化实例的操作
}
// 公共静态方法,用于获取唯一的实例
public static Singleton getInstance() {
return instance;
}
}
懒汉式和饿汉式都是单例模式的实现方式,它们分别有不同的特点和适用场景。下面对懒汉式和饿汉式进行比较:
综上所述,懒汉式和饿汉式各有优缺点,应根据具体的需求和性能要求来选择合适的实现方式。如果线程安全和性能是首要考虑因素,可以选择饿汉式;如果需要延迟加载或者考虑内存消耗,可以选择懒汉式,并确保在多线程环境下实现线程安全。