單例模式(Singleton):保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)
適用場景
1. 應(yīng)用中某個(gè)實(shí)例對象需要頻繁的被訪問仇奶。
2. 應(yīng)用中每次啟動只會存在一個(gè)實(shí)例葛峻。如賬號系統(tǒng),數(shù)據(jù)庫系統(tǒng)糙置。
常用的使用方式
一免糕、懶漢式
調(diào)用MySingleton.getInstance();得到MySingleton實(shí)例,然后就可以調(diào)用里面的方法啦跟衅。
“MySingleton.getInstance().method();”
優(yōu)點(diǎn):延遲加載(需要的時(shí)候才去加載)
缺點(diǎn): 線程不安全孵睬,在多線程中很容易出現(xiàn)不同步的情況,如在數(shù)據(jù)庫對象進(jìn)行的頻繁讀寫操作時(shí)
二伶跷、加同步鎖
直接修改實(shí)例的方法為:
或是為:
調(diào)用也是同上:“MySingleton.getInstance().method();”
優(yōu)點(diǎn):解決了線程不安全的問題掰读。
缺點(diǎn):效率有點(diǎn)低,每次調(diào)用實(shí)例都要判斷同步鎖