設計模式之禪 單例模式

2022-09-24 01:39:10 字數 1139 閱讀 6747

個人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...