寫在最前面
Singleton Pattern也就是單例模式
Quote from Wikipedia
In mathematics, a singleton, also known as a unit set, is a set with exactly one
element. For example, the set {0} is a singleton.
單例模式是一種對象創(chuàng)建性模式淤井,使用單例模式包个,可以保證為一個(gè)類只生成唯一的實(shí)例對象脏榆。也就是說,在整個(gè)程序空間中忙灼,該類只存在一個(gè)實(shí)例對象杭攻。
單例模式的要點(diǎn)有三個(gè):一是某個(gè)類只能有一個(gè)實(shí)例趟妥;而是必須自行創(chuàng)建整個(gè)實(shí)例猫态;三是它必須自行向整個(gè)系統(tǒng)提供整個(gè)實(shí)例。
單例的兩種模式
- 餓漢模式
- 懶漢模式
餓漢模式
不管用戶是否調(diào)用煮纵,當(dāng)類被加載的時(shí)候都會創(chuàng)建對象懂鸵,稱之為餓漢模式,而用private static方法又可以保證創(chuàng)建出來的對象是唯一的
懶漢模式
當(dāng)類加載的時(shí)候并沒有創(chuàng)建實(shí)例行疏,當(dāng)?shù)谝粋€(gè)用戶創(chuàng)建的時(shí)候匆光,才new第二第三好像就不new了
測試是否是同一個(gè)對象
測試類
餓漢模式和懶漢模式的區(qū)別
- 餓漢模式的特點(diǎn)加載類時(shí)比較慢(因?yàn)樵诩虞d類的時(shí)候就要new對象了),運(yùn)行時(shí)獲取對象的速度快酿联,線程安全
- 懶漢模式的特點(diǎn)加載類時(shí)比較快终息,運(yùn)行時(shí)獲取對象的速度慢(此時(shí)才new),線程不安全