单例模式

2020-04-24  本文已影响0人  virsus

饿汉式

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

懒汉式

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

双重检测

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

静态内部类

public class Sington {
    private Sington() {}
    private static class SingtonInner {
        private static final Sington instance = new Sington();
    }
    public static Sington getInstance() {
        return SingtonInner.instance;
    }
}

单例模式特点

上一篇 下一篇

猜你喜欢

热点阅读