美文网首页
Android 单例模式

Android 单例模式

作者: 碎念枫子 | 来源:发表于2022-12-12 12:41 被阅读0次

单例模式保证了全局有且并有一个对象,并且可以在全局访问

经典场景:图片的缓存LruChache、数据库访问对象、工具类

常见的单例有懒汉饿汉模式。

 **饿汉模式**:就是在程序一开始的时候就进行了初始化,一般是采用一个静态内部类。
 **懒汉模式**:就是在使用它的时候才进行初始化,这里需要考虑一下线程安全问题

饿汉模式

静态变量模式


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

静态代码块模式

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

饱汉模式

双重锁模式

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;
    }

静态内部类模式

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

相关文章

网友评论

      本文标题:Android 单例模式

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