設計模式 單例模式

2021-08-14 18:00:08 字數 1614 閱讀 6104

單例模式有很多種實現方式,目的是為了控制類的例項個數,確保乙個類只有乙個例項

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