单例模式(Singleton Pattern)

Posted mr-wenyan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式(Singleton Pattern)相关的知识,希望对你有一定的参考价值。

单例模式:

  和new类似,用来创建实例。

  单例对象的类保证了只有一个实例存在。

 

原理:

  1、该类的构造函数定义为私有方法,这样外面不能通过new实例化此类,只能在类里面实例化

  2、类返回一个获取实例的方法

 

构建方式:

  懒汉方式:全局的单例实例在第一次被使用是创建

  饿汉方式:全局的单例实例在类装载时构建

 

维基百科code例子:

饿汉方式创建:

  public class Singleton {
    private static final Singleton INSTANCE = new Singleton();
  
    // Private constructor suppresses   
    private Singleton() {}
 
    // default public constructor
    public static Singleton getInstance() {
        return INSTANCE;
    }
  }

 

懒汉方式创建:

  public class Singleton {
    private static volatile Singleton INSTANCE = null;
  
    // Private constructor suppresses 
    // default public constructor
    private Singleton() {}
  
    //thread safe and performance  promote 
    public static  Singleton getInstance() {
        if(INSTANCE == null){
             synchronized(Singleton.class){
                 //when more than two threads run into the first null check same time, to avoid instanced more than one time, it needs to be checked again.
                 if(INSTANCE == null){ 
                     INSTANCE = new Singleton();
                  }
              } 
        }
        return INSTANCE;
    }
  }

 

以上是关于单例模式(Singleton Pattern)的主要内容,如果未能解决你的问题,请参考以下文章

单例(Singleton pattern)模式的七种写法

二十三种设计模式(GOF23)详解1----单例模式(Singleton Pattern)

[Design Pattern] Singleton Pattern 简单案例

单例模式(Singleton Pattern)

单例模式(Singleton Pattern)

设计模式之- 单例模式(Singleton Pattern)