摘要:一單例模式定義單例模式確保某個類只有一個實例,而且自行實例化并向整個系統提供這個實例。技術實現單例模式靜態內部類評價使用靜態內部類的方式,只有在使用該實例的時候,才去加載靜態內部類,從而實現延時加載。
一、單例模式定義:
單例模式確保某個類只有一個實例,而且自行實例化并向整個系統提供這個實例。在計算機系統中,線程池、緩存、日志對象、對話框、打印機、顯卡的驅動程序對象常被設計成單例。這些應用都或多或少具有資源管理器的功能。每臺計算機可以有若干個打印機,但只能有一個Printer Spooler,以避免兩個打印作業同時輸出到打印機中。每臺計算機可以有若干通信端口,系統應當集中管理這些通信端口,以避免一個通信端口同時被兩個請求同時調用。總之,選擇單例模式就是為了避免不一致狀態,避免政出多頭。
二、實現方式:
懶漢模式
public class Demo { // 1、私有構造函數 private Demo() {} // 2、單例實例 private static Demo instance = null; // 3、獲取實例接口 public static Demo getInstance() { if(instance == null) { synchronized(Demo.class) { if(instance == null) { instance = new Demo(); } } } return instance; } }
評價:延時加載,節約了內存。效率相對低一些。利用同步塊實現線程安全。
餓漢模式
public class Singletion { private Singletion() {} private static Singletion instance = new Singletion(); // Singletion類加載的時候,就初始化這個實例 public static Singletion getInstance() { return instance; } }
評價:程序啟動時加載,先加載類,再初始化靜態屬性,由于后面無法再對對象進行修改,從而實現線程安全,效率相對高一些。占用內存相對多一些。
IoDH技術實現單例模式(靜態內部類)
public class Singletion { private Singletion () {} private static class InnerSingletion { private static Singletion single = new Singletion(); } public static Singletion getInstance(){ return InnerSingletion.single; } }
評價:使用靜態內部類的方式,只有在使用該實例的時候,才去加載靜態內部類,從而實現延時加載。因為靜態內部類只初始化一次,靜態內部類的靜態屬性也只初始化一次,后面無法修改對象的狀態,從而實現線程安全。綜合了上述兩種方法的優點。
三、單例模式的優缺點:
(1)單例模式沒有抽象層,因此單例模式的擴展比較困難的。
(2)單例類的職責過重,一定程度上違背了“單一職責原則”。
(3)長時間不使用的單例類可能被系統回收,導致單例對象狀態的丟失。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69119.html
摘要:什么是設計模式設計模式是一種能夠被反復使用,符合面向對象特性的代碼設計經驗的總結,合理的使用設計模式能夠讓你得代碼更容易維護和可靠設計模式的類型共分為創建型模式,結構型模式,行為型模式三種創建型模式創建型模式是對一個類的實例化過程進行了抽象 什么是設計模式 設計模式是一種能夠被反復使用,符合面向對象特性的代碼設計經驗的總結,合理的使用設計模式能夠讓你得代碼更容易維護和可靠設計模式的類型...
摘要:單例模式單例對象是一種常用的設計模式。使用代理模式,可以將功能劃分的更加清晰,有助于后期維護代碼如下這幾種都是比較常用的設計模式,更多設計模式后期會繼續添加。 說起設計模式,很多編程語言的設計模式大同小異,而且設計模式很多,這里就介紹一下java的幾種常見的設計模式,其實設計模式就是一個軟件的設計思想,從大型軟件架構出發,為了升級和維護方便,所以要降低依賴,降低耦合。先說下設計模式原則...
摘要:在面向對象的語言中,比如,等,單例模式通常是定義類時將構造函數設為,保證對象不能在外部被出來,同時給類定義一個靜態的方法,用來獲取或者創建這個唯一的實例。 萬事開頭難,作為正經歷菜鳥賽季的前端player,已經忘記第一次告訴自己要寫一些東西出來是多久以的事情了。。。如果,你也和我一樣,那就像我一樣,從現在開始,從看到這篇文章開始,打開電腦,敲下你的第一篇文章(或者任何形式的文字)吧。 ...
摘要:單例模式的定義是保證一個類只有僅有一個實例,并提供一個訪問它的全局訪問點。并且按照單一職責原則類實現功能類管理單例管理單例模式,達到可組合的的效果創建普通類引入代理類惰性單例模式分離創建實例對象的職責與管理單例的職責。 單例模式的定義是:保證一個類只有僅有一個實例,并提供一個訪問它的全局訪問點。 單例模式是一種常用的模式,有些對象我們往往只需要一個,比如線程池,全局緩存,window對...
閱讀 2895·2021-11-24 09:39
閱讀 1157·2021-11-02 14:38
閱讀 4141·2021-09-10 11:26
閱讀 2743·2021-08-25 09:40
閱讀 2303·2019-08-30 15:54
閱讀 477·2019-08-30 10:56
閱讀 2738·2019-08-26 12:14
閱讀 3211·2019-08-26 12:13