设计模式-单例模式

来源:互联网 发布:电信百事通需要网络吗? 编辑:程序博客网 时间:2024/06/09 04:17

1、饿汉式(静态常量)[可用]

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

2、饿汉式(静态代码块)[可用]

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


3、双重检查[推荐用]

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


4、静态内部类[推荐用]


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


5、枚举[推荐用]

public enum Singleton {    INSTANCE;    public void whateverMethod() {    }}



0 0
原创粉丝点击