概要
public class LazySingleton {private static LazySingleton singleton;private LazySingleton() {}public static LazySingleton getInstance() {if (singleton == null) {synchronized (LazySingleton.class) {if (singleton == null) {singleton = new LazySingleton();}}}return singleton;}}
饿汉式
- 饿汉,等不及了,所以是提前创建对象
public class HungrySingleton {private HungrySingleton singleton = new HungrySingleton();private HungrySingleton() {}public HungrySingleton getSingleton(){return singleton;}}
静态内部类
public class InnerClassSingleton {private InnerClassSingleton() {}private static class Inner {private static final InnerClassSingleton singleton = new InnerClassSingleton();}public static InnerClassSingleton getInstance() {return Inner.singleton;}}
枚举
- 枚举默认构造方法私有
public enum SingletonEnum {ONE,TWO,THREE;public static SingletonEnum getOne(){return ONE;}public static SingletonEnum getTwo(){return TWO;}public static SingletonEnum getThree(){return THREE;}}
