定義:單例模式就是乙個類只能有乙個例項。
實現單例模式的必要條件:
1、類構造器必須是私有的
2、乙個靜態的該類物件
3、乙個獲取例項物件的靜態方法
單例模式的使用場景:在乙個系統中要求乙個類有且僅有乙個物件,如果出現多個物件就會出現「不良反應」,可以採用單例模式。
單例模式優缺點:
優點:記憶體開支少;減少了系統的效能開銷;避免對資源的多重占用;可以在系統設定全域性的訪問點,避免對同乙個資源檔案進行寫操作。
缺點:單例模式一般沒有介面,所以擴充套件困難。
這種方式是,不管你會不會用到該類的例項,系統都會幫你建立好。
優點:執行緒安全,不用加鎖,提高效率
缺點:類載入時就進行初始化,浪費記憶體
public
class
singleton
public
static singleton getsingleton()
}
這個方式會把例項物件的建立延遲到真正使用的時候。
public
class
singleton02
public
static singleton02 getsingleton()
catch
(interruptedexception e)
singleton=
newsingleton02()
;}return singleton;
}}
通過以下**可以驗證執行緒不安全 :
@test
public
void
dmeo1()
throws executionexception, interruptedexception };
future
s1 = executorservice.
submit
(callable)
; future
s2 = executorservice.
submit
(callable)
; system.out.
println
(s1.
get(
)==s2.
get())
;}
public
class
singleton03
public
static singleton03 getsingleton()
catch
(interruptedexception e)
singleton=
newsingleton03()
;}}}
return singleton;
}}
上面的**使用雙重檢查機制,可以優化執行效率。使得之後呼叫該方法時,不需要在singleton不為null時,還去獲取鎖,之後再去同步**塊中檢查,singleton是否為null。
public
class
singleton04
public
static singleton04 getsingleton()
private
static
class
innerclass
}
使用內部類實現單例模式就寫起來很簡單,效率也高。
內部類的載入時期是它第一次被使用的時候,而且類只能被載入一次。
設計模式 單例模式
單例模式 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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...