個人blog 此篇博文位址:
單例模式:
確保乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。
demo(
通用檢視(餓漢式):
單例通用**模板:
public class singleton
public static singleton getsingleton()
public static void sosomthing()
}書中舉了乙個臣子朝拜皇上的例子:皇帝每天要上朝接待臣子,處理政務,臣子每天要叩拜皇上。而皇帝就那個唯一的單例。
minister類:
package com.sanyinchen.singleon;
public class emperor
public synchronized static emperor getinstance()
return emperor;
} public void say()
}emperor類:
package com.sanyinchen.singleon;
public class emperor
public synchronized static emperor getinstance()
return emperor;
} public void say()
}執行結果:
我就是皇帝啦啦啦....
我就是皇帝啦啦啦....
我就是皇帝啦啦啦....
我就是皇帝啦啦啦....
我就是皇帝啦啦啦....
我就是皇帝啦啦啦....
我就是皇帝啦啦啦....
我就是皇帝啦啦啦....
我就是皇帝啦啦啦....
我就是皇帝啦啦啦....
上面的單例模式為懶漢式,還有一種懶漢式,則是在定義的時候直接進行初始化,返回時直接返回此物件。
單例模式的優點:
(1)減少記憶體開支
(2)減少系統效能開銷
(3)避免對資源的多重占用
(4)優化和共享資源
單例模式的缺點:
(1)單例模式一般沒有介面,擴充套件很難
(2)單例模式對策是不利
(3) 單例模式與單一職責原則有衝突
設計模式之禪 單例模式
優點 只有乙個例項,減少了記憶體開支,特別是當乙個物件需要頻繁地建立,銷毀時。缺點 單例模式沒有介面,擴充套件很困難,對測試也不利。上面的例子在併發的情況下,會有執行緒安全的問題出現。解決方法是在獲取singleton物件的方法上加上synchronized。public class mutilsi...
設計模式之禪 單例模式
想法1.不想要別人去建立我這個物件 建構函式private唄,別人看不到 2.既然別人不能建立,那我該如何獲取 靜態屬性?不,這個設計會我的 皇帝 給弄得面目全非了 class emperor emperor.hd null 破壞者一號 靜態常量?不,這個太壓抑了吧!class emperor em...
設計模式之禪 單例模式
singleton pattern ensure a class has only one instance,and provide a global point of access to it.確保乙個類只有乙個例項 物件 而且自行例項化並且像整個系統提供這個例項 餓漢式單例 public cla...