设计模式 单例模式

来源:互联网 发布:西安万科金域名城 编辑:程序博客网 时间:2024/06/04 01:19

直接介绍几种线程安全的且我觉得还比较不错的方式:

1、饿汉式,就是类加载就初始化了:

public class Singleton {    private static Singleton instance = new Singleton();    public static Singleton getInstance(){        return instance;    }}

2、懒汉式,到你需要时,才会去创建:

public class Singleton {    private static Singleton instance ;    private Singleton(){}    public static Singleton getInstance(){        if (instance == null){            synchronized (Singleton.class){                if (instance == null){                    instance = new Singleton();                }            }        }        return instance;    }}

3、使用Java的枚举,如果对枚举不熟悉,小Google一下:

public enum  Singleton {    instance;}

4、使用一个持有类,主要是为了不在初始化的时候加载:

public class   Singleton {    private Singleton(){};    private static final class InstanceHolder{        private static Singleton INSTANCE = new Singleton();    }    public static Singleton getInstance(){        return InstanceHolder.INSTANCE;    }}

好了,就这么多,以上四种都是比较推荐使用的,除了第一种会类加载的时候初始化,其它三种都不会,且种都保证线程安全,特殊情况(除了多个类加载器,和你非要通过反射等手段生成多个对象)不考虑


原创粉丝点击