91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java設計模式之單例模式解析

發布時間:2020-09-16 23:27:19 來源:腳本之家 閱讀:191 作者:firs大風吹 欄目:編程語言

單例模式是最簡單但同時也是很重要的一種設計模式,優點有以下幾個方面:

1.當內存占用特別大的類需要頻繁地創建銷毀時,單例模式可以節省內存和提高性能,例如myBatis里面的sessionFactory

2.當需要對文件做單一讀寫時,例如同一時間只能同時寫入一個windows文本文件,則需要用單例來避免多重讀寫

缺點是:

1.單例模式沒有接口,很難對其進行拓展。

2.不利于測試,沒辦法直接根據接口mock出一個對象出來測試

最后說下其實現方式主要有餓漢模式和懶漢模式。其中懶漢模式又可以細分為幾種,后面再說。

餓漢模式代碼:

 public Class Singleton{
 //在類加載時便實例化自身,餓漢模式
  private static Class Singletom instance = new Singleton();
  private Singleton(){};
  
  public getInstance(){
   return this.instance 
  }
 } 

懶漢模式且線程安全代碼1

public Class Singleton{
  private static Class Singletom instance = null;
  private Singleton(){};
  
  public static Singleton getInstance(){
   if(instance==null){
   //雙重檢測鎖定懶漢模式,如果是直接在getInsance上加鎖,因為有99%的情況是線程安全的,會增加性能消耗,故才有雙重檢測鎖定,優化鎖,讓鎖只在1%的情況才執行 
   synchronized (Singleton.class) {

if (singleton == null) 
{ 
    singleton = new Singleton(); 
    } 
    } 
   return this.instance 
  } 
}

懶漢模式且線程安全代碼2

public Class Singleton{
  //靜態內部類的方式,應該是因為classLoader的機制使得內部類不會在類  
  //裝載時便實例化,所以可行
  private static Class SingletomLoader(){
   private static Singleton instance = new Singleton();
  }
  private Singleton(){};
  
  public static final Singleton getInstance(){
   
   return SingletomLoader.instance 
  }
 }  

總結:spring容器中的bean便使用了單例模式,由spring容器控制其bean的生命周期,而如果設置成多例模式的話,則是交由J2EE容器負責其對象的生命周期。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴宁市| 迁安市| 清水县| 信丰县| 盐源县| 中西区| 兰州市| 乌审旗| 长治市| 玉门市| 南澳县| 许昌县| 望奎县| 加查县| 高唐县| 和政县| 四子王旗| 南华县| 含山县| 三原县| 巴彦淖尔市| 祁阳县| 刚察县| 勃利县| 长葛市| 舟山市| 沂水县| 永丰县| 凤阳县| 孙吴县| 垣曲县| 隆子县| 三穗县| 大渡口区| 宜宾县| 孟州市| 双峰县| 梨树县| 同心县| 驻马店市| 沂水县|