设计模式--单例
2020-07-21 本文已影响0人
Stephenwish
public class Single1 {
//第一步纠正默认构造器为私有构造
private Single1() {
}
//第二步骤,类加载时候直接实例化一个对象,类加载只有一次,实例也只有一次伴随
private static final Single1 single = new Single1();
//第三步提供外部访问这个实例的方法
public static Single1 getInstance(){
return single;
}
}
项目中建议使用这个饿汉比较简单,相对于 double check 版本维护人力成本比较低
public class Single2 {
//第一步纠正默认构造器为私有构造
private Single2() {
}
//第二步骤,加载外部类的时候不会加载内部类,实现懒汉加载
private static class Single2Hold {
public static final Single2 single=new Single2();
}
//第三步提供外部访问这个实例的方法
public static Single2 getInstance(){
return Single2Hold.single;
}
}
这个是完美写法一种,既可以懒汉加载,又可以不用到锁
public enum Single3 {
//effective java 作者推荐写法,可以解决线程同步,还可以防止反序列化
INSTANCE;
}
另一种老外推荐完美写法