简介
1.保证一个类只能有一个实例,并且提供一个访问该实例的全局访问点.
2.减少了系统性能开销
饿汉式(线程安全,效率高,不能延迟加载)
public class SingleGof {
//实例化类的时候就实例化
private static SingleGof singleGof = new SingleGof();
private SingleGof(){}
private static SingleGof getInstance() {
return singleGof;
}
}
懒汉式(单例对象延迟加载)
public class SingleGof {
private static SingleGof singleGof ;
private SingleGof(){}
private static SingleGof getInstance() {
//用的时候才加载. 缺点每次调用getInstance()方法都要同步,并发效率低。
if (null == singleGof ) {
singleGof = new SingleGof();
}
return singleGof;
}
}
静态内部类(懒加载)推荐使用
public class SingleGof {
private static class SingletonClass {
private static final SingleGof singleGof = new SingleGof();
}
private static SingleGof getInstance() {
return SingletonClass.singleGof;
}
private SingleGof(){
}
}
使用枚举 ,枚举本身就是单例模式 .缺点是无延迟加载
public enum SingleGof {
//枚举元素,本身就是单例对象
INSTANCE;
public void singletonOperation() {
}
}