確保乙個類中只有乙個例項,自行例項化並向整個系統提供這個例項,這個類被稱為單例類,它提供全域性的訪問方法
在類中只有乙個例項,並提供乙個靜態的getinstacne()方法用於外界唯一訪問這個例項
防止在外部對其實例化,建構函式私有化
在單例類內部定義了乙個singleton型別的靜態物件,作為外部共享的唯一例項
windows作業系統中的任務管理器,**站等,在系統中都只有乙個例項,是典型的的單例模式
顧名思義,既然是惡漢,肯定是飢不擇食啦,所以不管三七二十一,在類載入的時候就把例項給建立出來咯
//餓漢式
public class singletondemo2
public static singletondemo2 getinstance()
}
優點:不用考慮執行緒同步問題
缺點:如果getinstance方法,則會造成資源浪費
建立例項這麼麻煩的事情。。當然要拖到最後一刻啦,等需要用到例項的時候再建立
//懶漢式
public class singletondemo1
public static synchronized singletondemo1 getinstance()
return instance;
}}
優點:延遲載入,資源利用率提高
缺點:同步造成併發效率低
在之前的懶漢式中,它的缺點非常明顯,為了保證在多執行緒的工作下能正常工作,它進行了同步,下乙個執行緒想要獲取物件,就必須等待上乙個執行緒釋放鎖之後,才可以繼續執行。但是百分之99.9的情況下都是不需要同步的,所以它的效率是非常低的,於是我們進行優化,避免整個方法被鎖,只對需要鎖的**部分加鎖,可以提高執行效率。
//雙重校驗鎖
public class singletondemo3
public static singletondemo3 getinstance()
}}
return instance;
}}
//靜態內部類
public class singletondemo4
private singletondemo4()
public static singletondemo4 getinstance()
}
外部類沒有static屬性,則不會像餓漢式那樣立即載入物件。
只有真正呼叫getinstance(),才會載入靜態內部類。載入類時是執行緒 安全的。 instance是static final型別,保證了記憶體中只有這樣乙個例項存在,而且只能被賦值一次,從而保證了執行緒安全性.
兼備了併發高效呼叫和延遲載入的優勢!
public enum singletondemo5
}
•優點:
–實現簡單
–列舉本身就是單例模式。由jvm從根本上提供保障!避免通過反射和反序列化的漏洞!
•缺點:
–無延遲載入
篇中對單例模式進行了簡單介紹,同時介紹了它的五種典型的實現方式
設計模式 2 單例模式
單例模式,也是非常好理解的一種設計模式。單例,也叫單件,目的是為了保證乙個類只有乙個例項。當然,沒使用上單例模式的時候,在 實現時候,注意不要隨便new某個物件,這 的確可以,但很不安全。因此簡單 一處理,乙個單例模式便出來了。using system using system.collection...
設計模式2 單例模式
單例模式 只能建立乙個例項化物件,屬於建立型模式 注 該類私有構造方法 該類只能自己建立自己的例項 實現方式有5種,分別是惡漢模式 懶漢模式,雙檢鎖 雙重校驗鎖,匿名內部類和列舉 public class singleton public static singleton getinstance 只...
設計模式2 單例模式
單例模式解決的問題就是 保證乙個類只能例項化乙個物件。一般我們保證乙個類只有乙個例項化物件時,做法是 public class car 如果這個brake物件不是僅供這乙個car類使用類呢?這樣做只保證了在乙個car物件有乙個brake,多個car物件或者其他使用brake的類例項就會有多個brak...