- 单列模式有5种常见的写法
- 饿汉式
- 懒汉式
- 双检锁
- 静态内部类,用的最多
- 枚举
- 单例的四大原则:
- 构造私有。
- 以静态方法或者枚举返回实例。
- 确保实例只有一个,尤其是多线程环境。
- 4确保反序列换时不会重新构建对象。
饿汉模式
public class SingleTon {
private static SingleTon INSTANCE = new SingleTon();
private SingleTon() {
}
public static SingleTon getInstance() {
return INSTANCE;
}
}
懒汉式
public class SingleTon {
private static SingleTon INSTANCE = null;
private SingleTon() {
}
public static SingleTon getInstance() {
if (INSTANCE == null) {
INSTANCE = new SingleTon();
}
return INSTANCE;
}
}
双检检查锁
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;
}
}
}
静态内部类,用的最多
public class SingleTon {
private SingleTon() {
}
private static class SingleTonHoler {
private static SingleTon INSTANCE = new SingleTon();
}
public static SingleTon getInstance() {
return SingleTonHoler.INSTANCE;
}
}