1. 程式人生 > >Android設計模式學習之單例模式

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、資源載入:
餓漢式在類建立的同時就例項化一個靜態物件出來,不管之後會不會使用這個單例,會佔據一定的記憶體,相應的在呼叫時速度也會更快,
而懶漢式顧名思義,會延遲載入,在第一次使用該單例的時候才會例項化物件出來,第一次掉用時要初始化,如果要做的工作比較多,效能上會有些延遲,之後就和餓漢式一樣了。

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