📜  Java Singleton(1)

📅  最后修改于: 2023-12-03 15:01:32.179000             🧑  作者: Mango

Java Singleton

简介

在Java编程中,Singleton是一种设计模式,用于确保只能创建一个类的实例,并提供全局访问点以获取该实例。Singleton模式通常用于需要使用共享资源或状态的场景,例如数据库连接、日志记录等。

实现方式
饿汉式(Eager Initialization)
public class Singleton {
    private static final Singleton instance = new Singleton();

    private Singleton() {}

    public static Singleton getInstance() {
        return instance;
    }
}
懒汉式(Lazy Initialization)
public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
双重检查锁定(Double-Checked Locking)
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;
    }
}
静态内部类(Static Inner Class)
public class Singleton {
    private Singleton() {}

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

    public static Singleton getInstance() {
        return SingletonHolder.instance;
    }
}
特点
  • 确保只有一个实例被创建;
  • 全局访问点使得其他类可以轻松获取该实例;
  • 通过延迟加载实现懒加载;
  • 可以处理多线程环境下的并发访问。
适用场景
  • 需要共享资源或状态的情况;
  • 对象的创建和销毁需要控制的情况;
  • 需要更好的性能和资源管理的情况。
总结

Singleton模式是一种常见的设计模式,因为其能够确保在整个应用程序中只创建一个实例,被广泛应用于Java编程中。根据实际需求,可以选择不同的实现方式来实现Singleton。无论哪种实现方式,都需要注意线程安全性、延迟加载等问题。通过合理使用Singleton模式,可以有效控制对象的创建和访问,提高代码的可维护性和可扩展性。