設計模式-----單例模式優缺點及使用場景

1、什麼是單例模式?

        單例模式就是保證系統中一個類只有一個實例。也就是說只能自己new自己並且實例唯一併對外提供

2、模式的作用及應用場景?

      作用:解決一個全局使用的類,頻繁創建和銷燬。擁有對象的唯一性,並保證內存中對象的唯一。可以節省內存,因爲單例共用一個實例,有利於Java的垃圾回收機制。

                也就是控制資源使用,通過線程同步來控制資源的併發訪問;

                控制實例產生的數量,達到節約資源的目的;

      應用場景舉例:

                           1、統計當前在線人數(網站計數器):用一個全局對象來記錄。

                           2、打印機(設備管理器):當有兩臺打印機,在輸出同一個文件的時候只一臺打印機進行輸出

                          3、數據庫連接池(控制資源):一般是採用單例模式,因爲數據庫連接是一種連接數據庫資源,不易頻繁創建和銷燬。

                         數據庫軟件系統中使用數據庫連接池,主要是節省打開或者關閉數據庫連接所引起的效率損耗,這種效率                的損耗還是非常昂貴的,因此用單例模式來維護,就可以大大降低這種損耗。

                          4、應用程序的日誌(資源共享):一般日誌內容是共享操作,需要在後面不斷寫入內容所以通常單例設計。

3、單例模式的優缺點

            優點:1、減少內存開銷,尤其是頻繁的創建和銷燬實例

                     2、避免對資源對過多佔用。

            缺點:1、沒有抽象層,不能繼承擴展很難。

                     2、違背了“單一職責原則”,一個類只重視內部關係,而忽略外部關係。

                     3、不適用於變化對象。

                     4、濫用單例會出現一些負面問題,如爲節省資源將數據庫連接池對象設計爲單例,可能會導致共享連接池對象對程序過多而出現連接池溢出。如果實例化的對象長時間不被利用,系統會認爲是垃圾而被回收,這樣將導致對象狀態丟失。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章