在某些情況下只需要某個物件只能有乙個例項,就需要用到單例模式。
單例模式的特點
只有乙個例項
必須要自行例項化
必須自行向整個系統停工訪問點
餓漢式單例模式的**實現
/**
* 懶漢式單例模式
*/public
class
lazysongleton
public lazysongleton getinstance()
return lazysongletoninstance;
}}
餓漢式單例模式**實現
/**
* 餓漢式單例模式
*/public
class
hungrysingleton
public hungrysingleton getinstance()
}
上面的兩種實現方式在多執行緒環境下有可能會出現建立多個例項的問題,就違背了單例設計模式。
解決的方案如下:
使用sinchronized來處理,也就是將getinstance()方法變成同步方法。
直接初始化靜態變數,保證執行緒安全。
執行緒安全的單例設計模式
/**
* 執行緒安全的單例模式
*/public
class
synsingleton
public
synchronized
static synsingleton getinstance()
return synsingleton;
}}
單例模式的優點
節約了系統資源,由於系統中只存在乙個例項物件,對於一些需要頻繁建立和銷毀的系統而言,單例模式節約了系統資源提高了系統的效能。
因為單例模式封裝了它的唯一例項,所以它可以嚴格控制客戶的訪問方式。
單例模式的缺點
單例模式中沒有抽象層,因此單例類的擴充套件很困難;
單例類的職責過重,在一定程度上違背了"單一職責"原則。
單例模式的使用場景:
系統只需要乙個例項物件,或者需要考慮消耗資源太大而允許建立乙個物件;
客戶呼叫類的單個例項只允許有乙個公共訪問點,不能通過其他途徑訪問該例項。
jdk中單例模式的使用
設計模式 單例模式
單例模式 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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...