1. 程式人生 > >設計模式 - 單例模式(singleton pattern)

設計模式 - 單例模式(singleton pattern)

設計模式 - 單例模式(singleton pattern)

餓漢模式

public class Singleton{
    private static final Singleton singleton = new Singleton ();
    
    private Singleton () {}
    
    public static Singleton getInstance() {
        return singletion;
    }
} 

以上方式在載入類的過程中比較慢,以下方式可以懶載入

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

懶漢模式

需要通過雙層空判斷以及鎖來確保執行緒安全與效率並存

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