概要
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;
}
}