設計模式 1 4單例模式

2022-03-12 12:52:42 字數 1286 閱讀 8031

單例模式:乙個類只允許生成乙個例項,並提供乙個訪問它的全域性訪問點。

1

private

static

singleton instance;23

///4

///構造方法私有化,不讓外界new新的例項,

5///

6private

singleton()79

10///

11///

獲得例項的唯一乙個全域性訪問點

12///

13///

14public

static

singleton getinstance()

1520

return

instance;21}

22 }

注意事項:

多執行緒時的單例:多個執行緒同時訪問時可能會造成多個單例。

1.懶漢式單例類:在第一次被引用時才將自己例項化

方法1:lock鎖

1

class

singleton213

14///

15///

獲得例項的唯一乙個全域性訪問點

16///

17///

18public

static

singleton getinstance()

1926}27

return

instance;28}

29 }

方法二:雙重鎖定(double-check locking)。方法一中每次進來都需要上鎖,程式效率降低。

1

class

singleton213

14///

15///

獲得例項的唯一乙個全域性訪問點

16///

17///

18public

static

singleton getinstance()

1929}30

}31return

instance;32}

33 }

2.餓漢式單例類:被載入時就將自己例項化。

1

//阻止派生,派生可能增加新的例項

2public

sealed

class

singleton310

public

static

singleton getinstance()

1114 }

14 單例模式筆記

單例模式 程式執行時,讓乙個類只能建立乙個物件 餓漢式 單例模式 餓漢式 public class singletonhungary 2.建立當前類的物件 private static singletonhungary s newsingletonhungary 3.對外提供公共訪問方法將singl...

設計模式 單例模式

單例模式 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 ...