单例模式的7中写法

来源:互联网 发布:sqlserver读写分离 编辑:程序博客网 时间:2024/06/04 23:37

参考位置

直接上代码
1.懒汉模式 线程不安全

public class SingleTon {    //懒汉模式 线程不安全    private static SingleTon singleTon = null;    private  SingleTon(){    }    public   SingleTon getInstance(){        if(singleTon == null){            singleTon = new SingleTon();        }        return  singleTon;    }}

懒汉模式 线程安全

public class SingleTon3 {    //懒汉模式 线程安全    private static SingleTon3 singleTon3 = null;    private  SingleTon3(){    }    public   synchronized  SingleTon3 getInstance(){        if(singleTon3 == null){            singleTon3 = new SingleTon3 ();        }        return  singleTon3;    }}

饿汉模式

public class SingleTon2 {    // 饿汉模式    private  SingleTon2  singleTon2 = new SingleTon2();    private SingleTon2(){    }    public SingleTon2 getInstance(){        return  singleTon2;    }}

饿汉模式变种

public class SingleTon4 {    private  static SingleTon4 singleTon4 = null;    static {        singleTon4 = new SingleTon4();    }    private SingleTon4(){    }    public static SingleTon4 getInstance(){        return  singleTon4;    }}

静态内部类

public class SingleTon5 {    private static class  SingleTon5Instance {        private  static  final  SingleTon5 SINGLE_TON_5 = new SingleTon5();    }    public SingleTon5 getInstance(){        return  SingleTon5Instance.SINGLE_TON_5;    }}

枚举类(Android不提倡使用枚举不止是单例模式)

public enum  SingleTon6 {        INSTANCE;}

双重检验所

public class SingleTon7 {    private static  volatile SingleTon7 singleTon7;    private SingleTon7(){    }    public SingleTon7 getSingleTon7(){        if(singleTon7 == null){            synchronized (SingleTon7.class){                if(singleTon7 == null){                    singleTon7 = new SingleTon7();                }            }        }        return  singleTon7;    }}

今天学习一下单例模式。做一个笔记

原创粉丝点击