美文网首页
Android单例实践(2019-12-04)

Android单例实践(2019-12-04)

作者: 勇往直前888 | 来源:发表于2019-12-04 15:12 被阅读0次

    单例在一些地方很有用,特别是那些在逻辑概念上有“唯一”的时候。比如,用户信息,就算有多用户切换,当前用户也只有一个,所以适合用单例。再比如,图片缓存,只需要一个就够了,多了也没有意义。

    双重检查锁定模式

    Double Check Lock(DCL)模式(双重检查锁定模式)。这个可以当做首选的模式来用。

    public class Singleton {
        private volatile static Singleton singleton = null;
        //构造函数私有化
        private Singleton() {
        }
        //公有的静态函数,对外暴露获取单例对象的接口
        public static Singleton getInstance() {
            if (singleton == null) {
                synchronized (Singleton.class) {
                    if (singleton == null) {
                        singleton = new Singleton();
                    }
                }
            }
            return singleton;
        }
    }
    

    静态内部类模式

    public class Singleton {
        private Singleton() {
        }
        
        public static Singleton getInstance() {
            return SingletonHolder.sInstance;
        }
        
        //静态内部类
        private static class SingletonHolder {
            private static final Singleton sInstance = new Singleton();
        }
    }
    

    代码模板

    // 定义单例静态变量
    private volatile static $class$ instance = null;
    
    // 构造函数私有化
    private $class$() {}
    
    // 获取单例对象方法
    public static $class$ getInstance() {
        if (instance == null) {
            synchronized ($class$.class) {
                if (instance == null) {
                    instance = new $class$();
                }
            }
        }
        return instance;
    }
    

    参考文章

    Android 设计模式之单例模式
    Android 中的单例模式

    相关文章

      网友评论

          本文标题:Android单例实践(2019-12-04)

          本文链接:https://www.haomeiwen.com/subject/iqflgctx.html