设计模式研究

设计模式--单例

2020-07-21  本文已影响0人  Stephenwish
public class Single1 {
    //第一步纠正默认构造器为私有构造

    private Single1() {
    }

    //第二步骤,类加载时候直接实例化一个对象,类加载只有一次,实例也只有一次伴随

    private static final Single1 single = new Single1();


    //第三步提供外部访问这个实例的方法

    public static Single1 getInstance(){
        return  single;
    }
}

\color{red}\bigstar{}{} 项目中建议使用这个饿汉比较简单,相对于 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;
    }
}

\bigstar{}{} 这个是完美写法一种,既可以懒汉加载,又可以不用到锁

public enum Single3 {
    //effective java 作者推荐写法,可以解决线程同步,还可以防止反序列化
    INSTANCE;
}

\bigstar{}{} 另一种老外推荐完美写法

上一篇下一篇

猜你喜欢

热点阅读