Android設計模式學習之單例模式

蒐集的資料:

http://blog.csdn.net/banketree/article/details/24985607  Android 設計模式

http://mobile.51cto.com/ahot-418968.htm   Android進階之大話設計模式

第一天:

單例模式,http://blog.csdn.net/liguangzhenghi/article/details/8076361、   http://blog.csdn.net/jason0539/article/details/23297037

單例模式的特點:
首先,單例模式使類在程序生命週期的任何時刻都只有一個實例,然後,單例的構造函數是私有的,外部程序如果想要訪問這個單例類的話,必須通過 GetInstance()來請求(注意是請求)得到這個單例類的實例。

即:

1、單例類只能有一個實例。
2、單例類必須自己創建自己的唯一實例。
3、單例類必須給所有其他對象提供這一實例。

單例常用的兩種模式:餓漢模式和懶漢模式

餓漢式和懶漢式區別
1、線程安全:
餓漢式是線程安全的,可以直接用於多線程而不會出現問題,懶漢式就不行,它是線程不安全的,如果用於多線程可能會被實例化多次,失去單例的作用。
如果要把懶漢式用於多線程,有兩種方式保證安全性,一種是在getInstance方法上加同步,另一種是在使用該單例方法前後加雙鎖。
2、資源加載:
餓漢式在類創建的同時就實例化一個靜態對象出來,不管之後會不會使用這個單例,會佔據一定的內存,相應的在調用時速度也會更快,
而懶漢式顧名思義,會延遲加載,在第一次使用該單例的時候纔會實例化對象出來,第一次掉用時要初始化,如果要做的工作比較多,性能上會有些延遲,之後就和餓漢式一樣了。

如果不需要外部通過構造函數傳入參數的話,就用餓漢式,否則的話就用懶漢式。用懶漢式的時候要記得考慮線程安全的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章