單例模式 設計模式

2021-07-24 10:12:00 字數 2289 閱讀 6478

用於保證整個應用中的某個例項有且只有乙個。

建立多個例項會造成占用過多資源,不一致結果。

有些物件我們只需要乙個,如:配置檔案、工具類、執行緒池、快取、日誌物件等。

【目的】整個應用只需要乙個singleton類的例項。

【實現關鍵】將構造方法私有化,不允許外部直接建立物件。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

/**

* 餓漢模式

* @author mok

*

*/

publicclasssingleton ;

//3、建立類的唯一例項,用private修飾防止被"篡改"

privatestaticsingleton instance =newsingleton();

//2、由於不允許直接建立物件,故需要提供public static的獲取例項的方法

publicstaticsingleton getinstance()

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

/**

* 懶漢模式

* @author mok

*

*/

publicclasssingleton ;

//3、建立類的唯一例項,用private修飾防止被"篡改"

privatestaticsingleton instance =null;

//2、由於不允許直接建立物件,故需要提供public static的獲取例項的方法

//△懶漢模式是非執行緒安全的,故獲取單例的方法需要用synchronized修飾

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