1.单例模式一:
package designModel;
public class Singleton1 {
private Singleton1() {};
private static Singleton1 instance = new Singleton1();
public static Singleton1 getInstance() {
return instance;
}
}
优点:效率高
缺点:没有实现懒加载
2.单例模式二:
package designModel;
public class Singleton2 {
private Singleton2() {};
private static Singleton2 instance = null;
public static Singleton2 getInstance() {
if(instance == null) {
synchronized(instance) {
if(instance == null) {
instance = new Singleton2();
}
}
}
return instance;
}
}
优点:实现了懒加载
缺点:使用了同步块,效率低。
3.单例模式三:
package designModel;
public class Singleton3 {
private Singleton3(){};
private static class SingletonHolder{
private static Singleton3 instance = new Singleton3();
}
public static Singleton3 getInstance() {
return SingletonHolder.instance;
}
}
结合了前俩种模式的优点、