1.定義
乙個類有且只有乙個例項,並且自行例項化向整個系統提供。
2.特點
a.單例類只能有乙個例項;
b.單例類必須自己例項化;
c.單例類必須向其他物件提供例項。
簡單的說就是,保證系統中的單例類必須只能有乙個例項。在日常應用中,通常是將資源管理器設計成單例類,比如執行緒池、日誌物件、印表機、驅動程式等,它們保證了系統資源分配一致性,不會紊亂。
3.實現方式
將單例類實現方式按例項化的時間(類載入時、第一次呼叫時),通常分成懶漢式單例、餓漢式單例和登記式單例,懶漢式單例是在類第一次使用時對壘進行例項化,餓漢式單例類是在類載入時例項化,登記式單例採用工廠模式的方法,通過類名獲取。
3.1.懶漢式單例類
懶漢式單例類在類第一次呼叫時進行例項化,通常的實現方式,如下:
public class singleton()
public static singleton getinstance()
return instance;}}
改方式是執行緒不安全的要保證執行緒安全有三種方法實現:
a.對getinstance方法加同步(sychronized)
public static synchronized singleton()
b.雙重檢查鎖定(對singleton類進行鎖定)
public static singleton getinstance() }
return instance;
}c.靜態內部類方式
public class singleton()
private singleton(){}
public static singleton getinstance()
}靜態內部類的方式保證了執行緒安全還避免了效能問題。
3.2.餓漢式單例類
餓漢式單例類在類載入時就例項化,因為它在類的建立時就已經例項化乙個物件,以後不再改變,因此是天生執行緒安全的。
public class singleton()
public static singleton getinstance()
}3.3.登記式單例類
類似spring的方法,將類名和類例項新增到乙個map中,要用的時候,直接在map中通過類名取,類似工廠模式,實現**省略。
設計模式之單例模式
前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...
設計模式之單例模式
package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...
設計模式之 單例模式
單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...