1.設計模式
創建型模式:創建物件
單例模式,工廠模式,抽象工廠模式,建造者模式,原型模式
結構型模式:
配接器模式,橋接模式,裝飾模式,組合模式,外觀模式,享元模式,代理模式
行為模式:
模板方法模式,命令模式,迭代器模式,觀察者模式,中介者模式,備忘錄模式
解釋器模式,狀態模式,策略模式,職責鏈模式,訪問者模式
2.單例模式
核心:保證一個類只有一個實體,并且提供一個訪問該實體的全域訪問點
常用場景:
Windows的Task Manager(任務管理器)就是很典型的單例模式
windows的Recycle Bin(回收站)也是典型的單例應用,在整個系統運行程序中,回收站一直維護著僅有的一個實體,
專案中,讀取組態檔的類,一般也只有一個物件,沒有必要每次使用組態檔資料,每次new一個物件去讀取,
網站的計數器,一般也是采用單例模式實作,否則難以同步,
應用程式的日志應用,一般都何用單例模式實作,這一般是由于共享的日志檔案一直處于打開狀態,因為只能有一個實體去操作 ,否則內容不好追加,
資料庫連接池的設計一般也是采用單例模式,因為資料庫連接是一種資料庫資源,
作業系統的檔案系統,也是大的單例模式實作的具體例子,一個作業系統只能有一個檔案系統,
Application 也是單例的典型應用(Servlet編程中會涉及到)
在Spring中,每個Bean默認就是單例的,這樣做的優點是Spring容器可以管理 – 在servlet編程中,每個Servlet也是單例 – 在spring MVC框架/struts1框架中,控制器物件也是單例
優點:
1.由于單例模式只生成一個實體,減少了系統性能開銷,當一個物件的產生需要 比較多的資源時,如讀取配置、產生其他依賴物件時,則可以通過在應用啟動 時直接產生一個單例物件,然后永久駐留記憶體的方式來解決
2.單例模式可以在系統設定全域的訪問點,優化環共享資源訪問,例如可以設計 一個單例類,負責所有資料表的映射處理
常見五種單例模式的實作方式:
1.餓漢式(執行緒安全,呼叫效率高, 但是,不能延時加載,)

2.懶漢式(執行緒安全,呼叫效率不高, 但是,可以延時加載,)

3.雙重檢測鎖式(由于JVM底層內部模型原因,偶爾會出問題,不建議使用)

4.靜態內部類式(執行緒安全,呼叫效率高, 但是,可以延時加載)

注:外部類無static屬性,不會像餓漢式立即加載物件
只有真正呼叫getInstance(),才會加載靜態內部類,加載類時時執行緒安全的,instance是static final型別,保證記憶體中只有一個實體存在,只能賦值一次,從而保證了執行緒安全性,
兼備了并發高效呼叫和延遲加載的優勢,

5.列舉單例(執行緒安全,呼叫效率高,不能延時加載)
注:實作簡單,列舉本身就是單例,由jvm提供保障,避免通過反射和反序列化的漏洞,無延遲加載
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/86684.html
標籤:Java
