java中的單例模式,舉例說明。

望遠鏡Monkey發表於2013-07-12

這次去筆試,有道題是要求設計一個單例模式。

Singleton模式主要作用是保證在Java應用程式中,一個類Class只有一個例項存在。
一般Singleton模式通常有三種形式:
第一種形式: 也是常用的形式。
public class Singleton {
private static Singleton instance = null;
private Singleton(){
//do something
}
//定義一個公共方法供其他類獲取該類的例項
public static Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
第二種形式:
public class Singleton {
//在自己內部定義自己的一個例項,只供內部呼叫
private static Singleton instance = new Singleton();
private Singleton(){
//do something
}
//這裡提供了一個供外部訪問本class的靜態方法,可以直接訪問
public static Singleton getInstance(){
return instance;
}
}
第三種形式: 雙重鎖的形式。
public class Singleton {
private static Singleton instance = null;
private Singleton(){
//do something
}
public static Singleton getInstance(){
if(instance==null){
synchronized(Singleton.class){
if(null == instance){
instance = new Singleton();
}
}
}
return instance;
}
}  
//這個模式將同步內容下方到if內部,提高了執行的效率,不必每次獲取物件時都進行同步,只有第一次才同步,建立了以後就沒必要了。

 

相關文章