在 Java 中,单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。单例模式常用于资源密集型的对象,例如数据库连接、线程池等。以下是几种实现单例模式的方式。
1.枚举(推荐)
Effective Java 作者推荐的一种单例实现方式,简单高效,无需加锁,线程安全,可以避免反射破坏枚举单例。
public enum Signleton{
INSTANCE;
public void doSomething(String str){
System.out.println(str);
}
}
INSTANCE
是枚举类型 Singleton
的唯一实例
使用方式:
在代码的其他地方,使用单例时只需通过 Singleton.INSTANCE
来访问枚举实例,调用它的方法或操作它的属性:
public class Main {
public static void main(String[] args) {
Singleton singleton = Singleton.INSTANCE;
singleton.doSomething();
}
}
2.静态内部类(推荐)
当外部类 Singletion 被加载的时候,并不会创建静态内部类 SingletonHelper 的实例对象,只有 Singleton 调用 getInstance()方法的时候,SingletonHelper 才会被加载,这个时候才会创建单例对象 INSTANCE。INSTANCE 的唯一性、创建过程的线程安全性,都由 JVM 来保证实现。
public class Singleton {
// 私有化构造函数
private Singleton() {
}
// 静态内部类,用于创建实例
private static class SingletonHelper {