a.餓漢單例,**如下:
public class emperor
public static emperor getinstance()
//皇帝發話了
public static void say()
//類中其他方法,盡量是static
public static void dosomething()
b.懶漢單例模式,**如下:
public class singleton
//通過該方法獲得例項物件
public static synchronized singleton getsingleton() // synchronized是為了解決執行緒安全問題
if(singleton == null)
return singleton;
}2.1 由於單例模式在記憶體中只有乙個例項,減少了記憶體開支
2.2 由於單例模式只生成乙個例項,所以減少了系統的效能開銷
2.3 單例模式可以避免對資源的多重占用,例如乙個寫檔案動作,由於只有乙個例項存在
記憶體中,避免對同乙個資源檔案的同時寫操作
2.4單例模式可以在系統設定全域性的訪問點,優化和共享資源訪問,例如可以設計乙個單
例類,負責所有資料表的對映處理。
3.1 單例模式沒有介面,所以擴充套件很困難
3.2 單例模式違背了單一職責原則(乙個類應該只實現乙個邏輯)
3.3 單例模式對測試不利 ,在並行開發環境中,如果單例模式沒有完成,是不能進行 測試的
補充:在spring中,每個bean默 認就是單例的,這樣做的優點是spring容器可以管理這些bean的生命期,決定什麼時候建立 出來,什麼時候銷毀,銷毀的時候要如何處理,等等。如果採用非單例模式(prototype類 型),則bean初始化後的管理交由j2ee容器,spring容器不再跟蹤管理bean的生命週期。
設計模式(1) 單例設計模式
單例設計模式 定義 確保乙個類只有乙個例項,並且自行例項化,並向整個系統提供這個例項。餓漢式 class single 通過該方法獲得例項物件 public single getinstance 類中其他方法盡量使用static public static void say 通過定義乙個私有訪問許可...
設計模式1單例設計模式
public class sigleton return instance 第二種執行緒加鎖的,太耗時了,執行緒安全是安全,但是太耗時間 這種簡單粗暴的方式不合理,不管他是不是 這種引起的第三種 不推薦使用 public static synchronized sigleton getinstanc...
單例設計模式1
所謂單例設計模式,即時採取一定的方法保證在整個軟體系統當中,對於某個類只能存在乙個物件例項,並且該類只提供乙個其物件例項的方法 靜態方法 優點 這種寫法比較簡單,就是在類裝載的時候就完成例項化.避免了執行緒同步問題 缺點 在類裝載的時候就完成了例項化,沒有達到lazy loading的效果.如果從始...