一、使用場景
系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。
二、單例模式實現的要點:
1、私有、靜態的單例物件
2、建構函式私有化
3、提供對外的公共訪問方法,以獲得單例物件
三、單例模式有三種實現
1、飽漢式(用的時候例項化)
publicclass
singletondemo
public
static
singletondemo getsingletoninstance()
}
2、餓漢式(初始化已準備好)
publicclass
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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...