雙重判斷
public class testsingleton
private static testsingleton instance;;
public static testsingleton getsingleton()
}} return instance;
}}
優點:使用雙重檢查,很大程度上避免了不必要的鎖開銷,提高了執行效率。這裡要注意,雖然未使用volatile關鍵字,但是這裡的synchronized已經保證了instance寫操作對其它執行緒讀操作的可見性。
靜態常量
public class testsingleton
private static final testsingleton instance = new testsingleton();
public static testsingleton getsingleton()
}
優點:實現簡單,無需使用動態**塊
缺點:在類裝載是完成初始化。若例項一直未被使用,會造成資源浪費。
內部靜態類
public class testsingleton
public static testsingleton getsingleton()
private static class innerclass
}
優點:無線程同步問題,實現了懶載入,只有呼叫getsingleton()才會建立例項。
參考:
設計模式 單例模式
單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...
設計模式 單例模式
class testsingleton static public function instance return self testsingleton private function clone public function setsinvar sinvar public function ...
設計模式 單例模式
單例模式的目的是保證類在系統中只被例項化一次,由該唯一的例項來為系統提供服務.單例模式主要用於保證服務的統一,比如獲取統一的編號服務,模仿oracle的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...