美文网首页
常见的单例模式

常见的单例模式

作者: zEcongChai | 来源:发表于2016-12-12 16:27 被阅读0次

饿汉式(线程不安全):

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

懒汉式:

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

大家或许已经注意到<code>synchronized</code>关键字,这使得在多线程的情况下保证单例对象的唯一性。这种方式在一定程度上节约了资源,但是第一次加载时需要及时进行实例化,反应稍慢,而且每次调用<code>getInstance()</code>都会进行同步,造成不必要的同步开销,不建议使用。

DCL方式实现单例(推荐)

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

DCL方式既实现了需要才初始化单例,又保证了线程安全,且<code>getInstance</code>调用时不立即进行同步锁,避免了不必要的开销。

单例在使用时需要注意:
单例对象如果持有<code>Context</code>,能容易造成内存泄漏,所以在传给单例对象的<code>Context</code>最好是<code>Application Context</code>

相关文章

  • Java设计模式—单例模式

    概念 java中单例模式是一种常见的设计模式,单例模式的写法有好几种,比较常见的有:懒汉式单例、饿汉式单例。单例模...

  • 常见的设计模式

    创建型模式 结构型模式 行为模式 单例模式 单例模式的优点 常见的五种单例模式实现方式 单例带来的问题 如何选择 ...

  • python之理解单例模式

    python之理解单例模式 1、单例模式 单例模式(Singleton Pattern)是一种常见的软件设计模式,...

  • OC - 单例模式

    导读: 一、什么是单例模式 二、单例的作用 三、常见的单例类 四、自定义单例类的方法 一、什么是单例模式 单例模式...

  • JAVA多线程之线程安全的单例模式

    概念:java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。单例模式有一...

  • 关于java单例模式,这篇已经讲得很清楚了,建议收藏!

    概念 java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。 特点 单例...

  • java 24 设计模式

    单例模式java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、...

  • java设计模式之单例模式

    单例模式属于java设计模式的一种,最常见实现方式有以下几种 懒汉、饿汉、双重检查单例、静态内部类单例。 单例模式...

  • 单例模式

    单例模式--概念 单例模式常见的写法有:懒汉式,饿汉式,登记式。单例模式的特点有:1.单例类只能有1个实例2.单例...

  • 单例模式

    概念 java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式模式,饿汉式模式、登记式单例三种。单例模式有以...

网友评论

      本文标题:常见的单例模式

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