Java设计模式-01单例模式

来源:互联网 发布:枪神纪刷枪软件2016 编辑:程序博客网 时间:2024/06/16 22:49

单例模式

1、概念

确保一个类最多只有一个实例,并提供一个全局访问点

2、示例

//经典单例模式public class Singleton {    //1、静态实例    private static Singleton instance=null;        //2、私有化构造方法    private Singleton(){            };        //3、全局访问方式    public static Singleton getInstance(){        if(instance==null){            instance=new Singleton();        }        return instance;    }}

3、优化

缺陷:多线程情况下,可能会产生多个实例
//方式1:直接创建实例public class Singleton {    //初始化的时候,就生成实例    private static Singleton instance=new Singleton();    private Singleton(){    };    public static Singleton getInstance(){        return instance;    }}//方式2:双重判定public class Singleton {    //加volatile修饰    private volatile static Singleton instance=null;    private Singleton(){    };    public static Singleton getInstance(){        //一重判定(不同步)        if(instance==null){            synchronized (Singleton.class) {                //二重判定(同步)                if(instance==null){                    instance=new Singleton();                }            }        }        return instance;    }}
原创粉丝点击