在创建单例类时,请考虑使用枚举。它解决了可能会因反序列化和反射而出现的问题。
单例是应该在每个JVM中只有一个实例的类。单例类的Same实例被多个线程重用。大多数情况下,我们使用单例来表示系统配置和窗口管理器,因为这些实例应该是JVM中所有线程和对象所共有的。【优锐课】抽丝剥茧 细说架构那些事抽丝剥茧 细说架构那些事
制作单例的传统方法
有几种流行的制作单例的方法。
方法1:具有公共静态最终字段的单例public class Singleton {public static final Singleton INSTANCE = new Singleton();private Singleton() {}}
方法2:使用公共静态工厂方法的单例public class Singleton {private static final Singleton INSTANCE = new Singleton();private Singleton() {}public static Singleton getInstance(){return INSTANCE;}}
方法3:具有延迟初始化的单例public class Singleton {private static Singleton INSTANCE = null;private Singleton() {}public static Singleton getInstance() {if (INSTANCE == null) {synchronized (Singleton.class) {if (INSTANCE == null) {INSTANCE = new Singleton();}}}return INSTANCE;}}
上述方法的优缺点
以上所有方法都使用私有构造函数强制执行不满足要求(无法创建实例)。在这里,即使我们没有任何事要做&#x