设计模式————单例模式

单例模式

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

 

饿汉式,线程安全。场景:应用程序总是创建并使用单例实例,或者在创建和运行时方面的负担不太繁重。

public class Singleton {
    private static Singleton mInstance = new Singleton3();
    private Singleton3() {}

    public static Singleton3 getInstance() {
        return  mInstance;
    }
}

 

懒汉式,同步方法。场景:getInstance()(的性能对应用程序不是很关键。

public class Singleton {
    private static Singleton mInstance;
    private Singleton() {}

    public synchronized static Singleton getInstance() {
        if( mInstance == null) {
            mInstance = new Singleton();
        }
        return mInstance;
    }
}

 

双重检查加锁,减少getInstance()的时间耗费。

public class Singleton {
    private volatile static Singleton mInstance;
    private Singleton() {}

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

 

posted @ 2019-01-09 13:02  kyun  阅读(113)  评论(0编辑  收藏  举报