Java设计模式之单例模式

Java设计模式之单例模式

最近由于想了解下底层的源码,所以看了些设计模式,后续看了几种写几种

单例模式英文原文:

  • Ensure a class has only one instance,and provide a global point of access to it
  • 即:在整个应用程序中,确保一个类只有一个实例,并向整个系统中提供这个实例

在Java中通常有两个表现形式

  • 饿汉式单例:类在加载时就被实例化
  • 懒汉式单例:第一次加载时才被加载实例化

1、饿汉式单例

Singleton
static Singleton m_instance = new Singleton ()
static getInstance() : Singleton

源代码:

public class Singleton{
     private Singleton() {}  
    private static final Singleton1 single = new Singleton();  
    //静态工厂方法   
    public static Singleton getInstance() {  
        return single;  
    }  
}
//成员变量是私有的,而且不能被外部访问

2、懒汉式单例

Singleton
static Singleton m_instance = null
syncchronized static getInstance() : Singleton

源代码:

public class Singleton {  
  private Singleton() {}  
   private static Singleton single=null;     
   public static Singleton getInstance() {  
       if (singleton == null) {    
           synchronized (Singleton.class) {    
              if (singleton == null) {    
                 singleton = new Singleton();   
              }    
           }    
       }    
       return singleton;   
   } 
} 
//双重校验锁
  • 第一种虽然是比较耗费资源,但是反映速度是比较好的
  • 第二种虽然比较爽,但是比较消耗运行时的性能,但是影响很小
  • 最终说来各有千秋,第一种比较适合用户资源配置,第二种比较适合于业务逻辑上的单例模式

借助于:电子工业出版社《设计原则》感谢!

原文地址:https://www.cnblogs.com/ontoweb-zp/p/7906274.html