1 2 3 4 5
| public enum Singleton { INSTANCE; public void whateverMethod() { } }
|
Singleton模式讲解
模式类型
对象创建型模式
意图
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
动机
保证一个类只有一个实例,若打印假脱机等。更好的方法是让类自身负责保存它的唯一实例。
UML
实现
实现方式1:(懒加载,双重校验锁)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class Singleton { private volatile static Singleton singleton; private Singleton (){} public static Singleton getSingleton() { if (singleton == null) { synchronized (Singleton.class) { if (singleton == null) { singleton = new Singleton(); } } } return singleton; } }
|
实现方式2:(最佳方式,可避免被反序列化创建)
1 2 3 4 5
| public enum Singleton { INSTANCE; public void whateverMethod() { } }
|
实现方式3:(懒加载)
1 2 3 4 5 6 7 8 9
| public class Singleton { private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton (){} public static final Singleton getInstance() { return SingletonHolder.INSTANCE; } }
|