Android设计模式--推荐使用的两种单例模式

如果不是高并发,出于效率考虑推荐使用如下两种单例模式的写法。

1、两次判空实现单例

优点:资源利用率高,效率高。缺点:第一次加载时反应稍慢,由于JAVA内存模型的原因偶尔会失败。

public class Singleton {

    private static Singleton instance=null;

    //私有构造方法
    private Singleton(){
    }

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

2、静态内部类实现单例

优点:可以确保线程安全,也能够保证单例对象的唯一性,同时延迟了单例的实例化。

public class Singleton {

    //私有构造方法
    private Singleton(){
    }

    public static Singleton getInstance(){
        return SingletonHolder.instance;
    }

    private static class SingletonHolder{
        private static final Singleton instance=new Singleton();
    }

}

你可能感兴趣的:(Android设计模式--推荐使用的两种单例模式)