設計模式 單例模式

2021-10-21 11:18:29 字數 1466 閱讀 3782

單例模式就是保證乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。(建議採用 餓漢式 建立方法。執行緒安全,容易實現。初始化慢一點。)

1,由於單例模式只生成乙個例項,所以能減少系統效能的開銷;

2,避免對共享資源的多重占用導致的效能損耗,如日誌檔案,應用配置;

3,提供了對唯一例項的受控訪問,加快物件訪問速度,比如多執行緒的執行緒池的設計,方便對池中的執行緒進行控制;

1,保證乙個類只有乙個例項;

2,在類中自己例項化自己;

3,向整個系統提供這個例項;

/**

* 餓漢式單例模式

*/public class singleton01

/**因為不需要加同步**塊就能保證執行緒安全,所以效率會高

* --------------->向整個系統提供這個例項;

* @return

*/public singleton01 getsingleton01()

}

可以看出,餓漢式的優點有,執行緒安全,呼叫效率高;但因為載入類時立即例項化,所以沒有延時載入的優勢,並且當沒有用到這個例項的話,就會白白例項化個物件,浪費資源。

/**

* 懶漢式單例模式

*/public class singleton02

/*** 第一次呼叫時才會例項化物件,並且之後不會再例項化,直接返回第一次建立的物件

* 通過新增關鍵字synchronized來保證執行緒安全,但執行緒等待的緣故所以效率會降低

* 只有用到才建立物件,所以叫懶漢式,故而資源利用率高了

*/public static synchronized singleton02 getsingleton02()

return singleton02;

}}

可以看出,懶漢式單例模式的優點有:資源利用率高了,有延時載入的優勢,執行緒安全;但呼叫效率低。

//靜態內部類方式

public class singleton03

/*** 私有構造器

*/private singleton03()

public static singleton03 getinstance()

}

總結下,靜態內部類方式的優點:執行緒安全,具有延時載入的優勢,資源利用率也搞,而且沒有使用同步**,效率還高。
//列舉式單例模式

public enum singleton04

}

總結:實現簡單,列舉本身就是單例,由jvm從根本上提供保障,避免通過反射和反序列化的漏洞!但沒有延遲載入!

可以自行測試下,其實還有個雙重檢驗鎖式單例模式,但偶爾會出問題,實用性比較低,也不推薦實用,這裡就不講了。

1,占用資源少,不需要延時載入,列舉式好如餓漢式;

2,占用資源多,需要延時載入,靜態內部類式好於懶漢式;

設計模式 單例模式

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