美文网首页
【设计模式】单例模式的实现

【设计模式】单例模式的实现

作者: 胖三斤66 | 来源:发表于2020-01-15 11:15 被阅读0次

节选自:Java实现单例模式(懒汉式、饿汉式、双重检验锁、静态内部类方式、枚举方式)_常今-CSDN博客

方法一:饿汉模式

优点:简单且安全,原理跟 String 一样不可变。

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;
  private Singleton(){}

  // 线程不安全,不推荐
  public static Singleton getInstanceA(){
    if (instance == null)
      instance = new Singleton();
    return instance;
  }
  
  // 效率低,不推荐
  public synchronized static Singleton getInstanceB(){
    if (instance == null)
      instance = new Singleton();
    return instance;
  }

  // 完全正确的,推荐
  public static Singleton getInstanceC(){
    if (instance == null)
      synchronized(Singleton.class){
        if (instance == null)
          instance = new Singleton();
      }
    return instance;
  }
}

方法三:静态内部类

优点:

  • 懒汉模式的懒加载。利用内部类特点--加载一个类时,其内部类不会同时被加载。一个类被加载,当且仅当其某个静态成员(静态域、构造器、静态方法等)被调用时发生。
  • 饿汉模式的简单。
public class Singleton{
  private Singleton(){}
  public static getInstance(){
    return InnerSingleton.instance;
  }
  
  private static class InnerSingleton{
    private final static Singleton instance = new Singleton();
  }
}

方法四:枚举

特点:直接利用枚举的单例和线程安全的特征。

enum Single{
  SINGLE;
  private Single(){}
}

public class Singleton{
  public static void main(String[] args){
    Single s = Single.SINGLE;
  }
}

相关文章

  • 设计模式第二篇、单例设计模式

    目录1、什么是单例设计模式2、单例设计模式的简单实现3、单例设计模式面临的两个问题及其完整实现4、单例设计模式的应...

  • 设计模式

    手写单例模式(线程安全) 你知道几种设计模式?单例模式是什么?Spring中怎么实现单例模式?

  • 单例设计模式

    单例设计模式 单例设计模式介绍 单例设计模式的八种方法2.1 饿汉式(静态常量)2.1.1 实现步骤2.1.2 代...

  • Java中单例模式你用的哪一种?

    一起讨论java中的单例模式。单例模式是java设计模式中算是最简单的设计模式了。 * java实现单例模式的写法...

  • 单例模式的常用实现方式

    单例模式属于最常用的设计模式,Java中有很多实现单例模式的方式,各有其优缺点 实现方式对比 单例实现方式线程安全...

  • 面试题总结

    1.单例设计模式的实现,为什么使用单例模式?? static MusicManager ...

  • 单例模式只有饿汉式和懒汉式吗?这几种单例模式你见过吗

    设计模式之单例模式-单例模式的几种实现方式及小案例 本文出处:凯哥Java(wx:kaigejava) 单例模式有...

  • 设计模式之一:单例模式

    摘要:设计模式之一:单例模式目录介绍1.单例模式介绍2.单例模式定义3.单例模式使用场景4.单例模式的实现方式 4...

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • 基础-单例模式

    单例模式总结-Python实现 面试里每次问设计模式,必问单例模式 来自《Python设计模式》(第2版) 1.理...

网友评论

      本文标题:【设计模式】单例模式的实现

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