設計模式 單例模式

2022-08-16 19:30:26 字數 1263 閱讀 3243

一、使用場景

系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。

二、單例模式實現的要點:

1、私有、靜態的單例物件

2、建構函式私有化

3、提供對外的公共訪問方法,以獲得單例物件

三、單例模式有三種實現

1、飽漢式(用的時候例項化)

public

class

singletondemo

public

static

singletondemo getsingletoninstance()

}

2、餓漢式(初始化已準備好)

public

class

singletondemo

public

static

singletondemo getsingletoninstance()

return

singletoninstance;

}/// **

//* 為了應對上述的不安全,可以簡單的如下操作給方法新增[synchronized],使之成為同步函式。

//* 但是:

//* 在很多執行緒的情況下,就每個執行緒訪問都得判斷鎖,效率就是問題。所以,才有後面的[雙重鎖形式]

//*/

//public static synchronized singletonpattern2 getsingletoninstance()

//return singletoninstance;

//}}

3、雙重鎖

/**

* 雙重鎖形式

* 這個模式將同步內容下放到if內部,提高了執行的效率,不必每次獲取物件時都進行同步,

* 只有第一次才同步,建立了以後就沒必要了。避免土豪模式下建立單例,可能存在的執行緒不安全問題。

* * created by lxk on 2017/3/23 */

public

class

singletondemo

/*** 靜態方法同步的時候,使用的鎖,就不能是this,而是類.class

*/public

static

singletondemo getsingletoninstance() }}

return

singletoninstance;

}}

**自:

設計模式 單例模式

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