單例模式:保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。
解決的問題:乙個全域性使用的類,頻繁的建立和銷毀。
1. 餓漢式單例(立即載入)
// 餓漢式單例
public class singleton1
private static singleton1 single = new singleton1();
// 靜態工廠方法
public static singleton1 getinstance()
}
2. 懶漢式單例(延時載入)
// 懶漢式單例
public class singleton2
private static singleton2 single = null;
public static singleton2 getinstance()
return single;
}}
餓漢式和懶漢式的區別:
餓漢式是一載入就把單例例項化,而懶漢式是當呼叫靜態方法getinstance的時候,初始化單例。
餓漢式是執行緒安全的,懶漢執行緒不安全。
懶漢式改進:
方法加鎖或者同步**塊加鎖,保證了執行緒安全,但效率低。每次都要加鎖解鎖。**入下
public class singleton3
private static singleton3 single = null;
public static singleton3 getinstance()
}return single;
}}
繼續改進:
雙重鎖定方法。 先進行判斷,若未被建立時,加鎖。**入下
public class singleton4
private static singleton4 single = null;
// 雙重檢查
public static singleton4 getinstance() }}
return single;
}}
當然 ,還可以使用靜態內部類,靜態**塊,內部列舉類等方式 設計模式之單例模式
前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會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...