美文网首页
Android中常用的设计模式----单例

Android中常用的设计模式----单例

作者: 咕哒咕 | 来源:发表于2021-02-27 19:12 被阅读0次

单例模式可能是平常开发中使用最多的模式了。

那么单例模式是怎么样的:单例模式的类必须保证只有一个实例存在。多用于整个程序只需要有一个实例,通常很消耗资源的类,比如网络请求,IO操作,访问数据库等。由于类比较耗资源,所以没必要让它构造多个实例。
单例的定义
确保某一个类只有一个实例,并且自行实例化,向整个系统提供这个唯一实例。


单例的几种实现方式

饿汉式:

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

    private  Singleton() {}

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

优点:
①线程安全
②类加载时已经创建好了一个静态对象,调用时反应快。
缺点:
①资源效率不高,可能没有使用getInstance,但是其他途径加载了
该类,这个实例依然会初始化。

懒汉式:

public class Singleton{
    private static Singleton instance;
    
    private Singleton(){}
    
    public static **synchronized** Singleton getInstance(){//注意同步
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}

优点:
资源利用率高,延迟初始化,可使用类其他静态方法。
缺点:
第一次加载慢,多线程情况下不必要的同步开销增大。

双重校验锁:

public class Singleton{
    private volatile static Singleton instance;//注意volatile 关键字
    
    private Singleton(){}
    
    public static synchronized Singleton getInstance(){
        if(instance == null){
            synchronized(Singleton.class){
                if(instance == null){
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }

}

添加了volatile关键字,保证了执行顺序。保证了高并发下会出现的问题。

静态内部类:

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

\color{#FF0000}{推荐使用双重校验锁或者使用静态内部类方式,在非高并发情况下,去掉双重校验锁的volatile也可以}

相关文章

  • 简单聊聊单例模式

    单例模式应该是Android开发中常用的一种设计模式。不仅我们经常用到,Android源码中也经常可以看到单例模式...

  • 单例模式

    JAVA设计模式之单例模式 十种常用的设计模式 概念: java中单例模式是一种常见的设计模式,单例模式的写法...

  • 【设计模式】单例模式

    单例模式 常用单例模式: 懒汉单例模式: 静态内部类单例模式: Android Application 中使用单例模式:

  • Node.js与单例模式

    1、前端的JavaScript单例模式 单例模式是非常常用的设计模式,前端的JavaScript中单例模式代码可能...

  • 单例模式

    3、单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象...

  • 设计模式学习之单例模式

    设计模式之单例模式 1 什么是单例模式 在维基百科中单例模式定义为 单例模式,也叫单子模式,是一种常用的软件设计模...

  • 设计模式-单例模式(Singleton)

    单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保...

  • Android 设计模式之简单工厂模式

    设计模式系列文章 Android 设计模式之单例模式 Android 设计模式之Builder模式 Android...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • js设计模式-单例模式

    单例模式(Singleton Pattern)什么是单例模式 单例模式,是一种常用的软件设计模式。在它的核心结构中...

网友评论

      本文标题:Android中常用的设计模式----单例

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