單例設計模式推薦

2021-10-22 01:15:50 字數 1375 閱讀 5170

單例模式主要是為了避免因為建立了多個例項造成資源的浪費,且多個例項由於多次呼叫容易導致結果出現錯誤,而使用單例模式能夠保證整個應用中有且只有乙個例項。從其名字中我們就可以看出所謂單例,就是單個例項也就是說它可以解決的問題是:可以保證乙個類在記憶體中的物件的唯一性,在一些常用的工具類、執行緒池、快取,資料庫,賬戶登入系統、配置檔案等程式中可能只允許我們建立乙個物件,一方面如果建立多個物件可能引起程式的錯誤,另一方面建立多個物件也造成資源的浪費。

(1)私有化該類的建構函式

(2)通過new在本類中建立乙個本類物件

(3)定義乙個公有的方法,將在該類中所建立的物件返回

單例模式的寫法大的方面可以分為5種五種①餓漢式②雙重校驗鎖③靜態內部類④列舉。

public class singlemode ;

public static singlemode getinstance()

}

優點:類載入的時候完成了例項化,執行緒安全。

缺點:可能沒有用到這個示例,但是卻載入了,造成記憶體的浪費(較小)。

public class singlemode ;

public static singlemode getinstance() }}

return instance;

}}

double-check概念對於多執行緒開發者來說不會陌生,如**中所示,我們進行了兩次if (instance== null)檢查,這樣就可以保證執行緒安全了。這樣,例項化**只用執行一次,後面再次訪問時,判斷if (instance== null),直接return例項化物件。

public class singlemode;

private static class singlemodeholder

public static singlemode getinstance()

}

訪問方式

singlemode instance = singlemode.getinstance();
優點:避免了執行緒不安全,延遲載入,效率高。

public enum singlemodeenum 

public void method(){}

}

訪問方式

singlemodeenum.instance.method();
借助jdk1.5中新增的列舉來實現單例模式。不僅能避免多執行緒同步問題,而且還能防止反序列化重新建立新的物件。可能是因為列舉在jdk1.5中才新增,所以在實際專案開發中,很少見人這麼寫過,這種方式也是最好的一種方式,如果在開發中jdk滿足要求的情況下建議使用這種方式。

設計模式 單例模式(列舉,強烈推薦)

通過列舉實現單例模式 最佳的單例實現模式就是列舉模式。利用列舉的特性,讓jvm來幫我們保證執行緒安全和單一例項的問題。除此之外,寫法還特別簡單。還可以規避可能還存在反射攻擊或者反序列化攻擊,完全保證單例模式 示例和注釋 單例模式 列舉方式 1.建乙個列舉類 public class singleto...

單例設計模式(餓漢單例設計模式 懶漢單例設計模式)

1.什麼是單例 單例的意思是乙個類永遠只存在乙個物件,不能建立多個物件。2.為什麼要用單例 開發中有很多的物件我們只需要乙個,例如虛擬機器物件,任務管理器物件 物件越多越佔記憶體,有時候只需要乙個物件就可以實現業務,單例可以節省記憶體空間。3.如何實現單例 單例的實現方式有 餓漢單例設計模式 通過類...

設計模式 單例設計模式

歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...