設計模式 單例模式

2021-08-03 21:55:01 字數 852 閱讀 9427

雙重判斷

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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...