用於保證整個應用中的某個例項有且只有乙個。
建立多個例項會造成占用過多資源,不一致結果。
有些物件我們只需要乙個,如:配置檔案、工具類、執行緒池、快取、日誌物件等。
【目的】整個應用只需要乙個singleton類的例項。
【實現關鍵】將構造方法私有化,不允許外部直接建立物件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
* 餓漢模式
* @author mok
*
*/
public
class
singleton ;
//3、建立類的唯一例項,用private修飾防止被"篡改"
private
static
singleton instance =
new
singleton();
//2、由於不允許直接建立物件,故需要提供public static的獲取例項的方法
public
static
singleton getinstance()
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* 懶漢模式
* @author mok
*
*/
public
class
singleton ;
//3、建立類的唯一例項,用private修飾防止被"篡改"
private
static
singleton instance =
null
;
//2、由於不允許直接建立物件,故需要提供public static的獲取例項的方法
//△懶漢模式是非執行緒安全的,故獲取單例的方法需要用synchronized修飾
public
static
synchronized
singleton getinstance()
}
【餓漢模式 vs. 懶漢模式】
餓漢模式:載入類時比較慢,但執行時獲取物件的速度比較快;執行緒安全;
懶漢模式:載入類時比較快,但執行時獲取物件的速度比較慢;非執行緒安全;
設計模式 單例模式
單例模式 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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...