單例模式有很多種實現方式,目的是為了控制類的例項個數,確保乙個類只有乙個例項
在23種設計模式中,單例模式可以說是最簡單的一種了,實現它的要素有如下幾點:
常見的單例模式有以下幾種:
public
class singleton
//私有的靜態例項
private
static singleton instance = new singleton();
//共有的靜態訪問方法
public
static singleton getinstance()
}
public
class singleton
//私有靜態例項
private
static singleton instance;
//公有的靜態訪問方法
public
static singleton getinstance()
return instance;
}}
這種方法有執行緒安全問題,在多執行緒情況下,容易例項化多個例項
為了解決執行緒安全問題,我們可以使用synchronized關鍵字,保證乙個執行緒訪問時,其他執行緒的訪問被堵塞
public
class singleton
//私有靜態例項
private
static singleton instance;
//公有的靜態訪問方法
//使用synchronized保證執行緒安全
public
static synchronized singleton getinstance()
return instance;
}}
這種方法也有弊端,容易造成阻塞時間過長的問題
為了改善這個問題,可以把synchronized放在if條件語句內
public
class singleton
//私有靜態例項
private
static singleton instance;
//公有的靜態訪問方法
public
static singleton getinstance()}}
return instance;
}}
或者加/解鎖
if(instance == null)
//解鎖
lock.unlock();
}
public
class singleton
//在私有的靜態內部類中進行私有的靜態例項化
private
static
class psc
//公有的靜態訪問方法
public
static synchronized singleton getinstance()
}
這種方式利用類的載入機制,靜態塊**只載入一次,同時也避免了多執行緒的問題。 設計模式 單例模式
單例模式 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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...