寫乙個單例模式出來(**):
餓漢模式
public class single
//建立本類物件
private static single s = new single();
//對外提供獲取本來物件方法
public static single getinstance()
}
注意問題:
由於外界無法建立single物件,沒有物件,那就無法呼叫getinstance方法,這時需要將getinstance方法靜態化,這樣外界就可以通過類名直接呼叫該方法。
你可以把構造方法定義成private的,沒有問題,這樣任何其他類都不能使用new來構造這個類的物件。
懶漢模式
public class single
// 在本類中建立本類物件
private static single instance = null;
// 對外提供靜態訪問方法,獲取本類例項物件
public static single getinstance()
return instance;
}}class singledemo
}
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~~
~~~單例模式:單例模式的意思就是只有乙個例項。單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。
單例模式有三種:懶漢式單例,餓漢式單例,登記式單例。
public class singleton //此類不能被例項化
public static synchronized singleton getinstance()
return singleton;}}
優點:第一次呼叫才初始化,避免記憶體浪費。
缺點:必須加鎖synchronized 才能保證單例,(如果兩個執行緒同時呼叫getinstance方法,會chuxia)但加鎖會影響效率。
public class singleton //此類不能被例項化
public static singleton getinstance()
}缺點:類載入時就初始化,浪費記憶體。
public class singleton //構造方法是私有的,從而避免外界利用構造方法直接建立任意多例項。
public static singleton getinstance()
private static class holder
}內部類只有在外部類被呼叫才載入,產生singleton例項;又不用加鎖。此模式有上述兩個模式的優點,遮蔽了它們的缺點,是最好的單例模式。
說明:之前一直不太清楚幾個模式之間的區別;也不曉得單例模式的注意點,就知道個概念吧。這次在同事的督促下寫完乙個單例,然後聽他講了三個單例以及之間的區別,有種豁然開朗的感覺。貌似最後乙個模式是我之前一直沒理解的。分享之,希望大家都能弄懂單例~
單例模式示例 以示例為例
單例模式示例 存檔日期 2019年5月13日 首次發布 2003年2月1日 從sax到rddl,社群標準在xml技術中起著非常重要的作用。xslt最重要的社群標準是exslt倡議,用於標準擴充套件功能和元素。在本文中,uche ogbuji使用實際示例來介紹和演示一些有用的exslt函式。此內容不再...
單例模式解析
1 餓漢模式 優點 在類初始化時已經例項化完成,呼叫時較快 執行緒安全 缺點 不管後期是否使用,都進行了一次初始化,有可能浪費資源 public class singleton 建構函式私有化 public static singleton getinstance 2 懶漢模式 不推薦 優點 只有在...
單例模式解析
什麼是單例模式?在整個jvm執行週期中只有乙個例項的物件。用法 執行緒安全 double check public void class singleton 3.實現雙重檢查鎖構造單例 public singleton getinstance return instance 為什麼要使用雙重檢查鎖?...