因某些需求,我們只需要某個類只有乙個例項,此時考慮單例模式。因此,單例模式具有以下幾種特點:
1.該類只有乙個例項
2.只能由自己建立例項
3.其他呼叫不能建立例項
4.對外需要提供介面
對此,編寫單例模式就需要注意以下幾點:
1.有關例項的成員變數私有化
2.構造方法私有化
3.對外提供獲取例項的公共介面
懶漢式:需要例項時才去建立,節約系統資源,執行緒不安全
public class singleton
public static singleton getinstance()
return instance;
}}
執行緒安全懶漢式:使用synchronize同步**塊解決執行緒安全問題,也比直接用synchronize修飾對外介面造成的效率問題
public class singleton
public static singleton getinstance()}}
return instance;
}}
餓漢式:在載入類是已經建立出例項,相比懶漢占用資源資源,執行緒安全,多為實際開發中使用
public class singleton
public static singleton getinstance()
}
靜態類內部載入:內部類在呼叫getinstance時才載入,並且執行緒安全,集合了懶漢和餓漢的優點
public class singleton
private singleton()
public static singleton getinstance()
}
列舉型:為了解決序列化和反射問題的終極單例,不過一般很少見人用
public enum singleton
}
一般來說還是推薦大家使用靜態類內部載入形式,比較常用且**量少,當然,特殊情況特殊對待 java設計模式之單例模式
單位面試題目中有一道關於單例模式的題目.大多數參加筆試的同事都會寫出getinstance這個函式,但是當我問起什麼情況下需要使用單例 單例具體有什麼好處的時候 static函式也可以構建唯一例項,為什麼還需要單例.從使用單例的經驗來看,如下場景下,個人感覺應該使用單例 1.如果需要構建乙個工具類,...
java設計模式 之 單例模式
單例模式 有些類在程式執行過程中只需要儲存乙個例項,比如檔案管理類,音訊管理類,那麼我們如何實現乙個單例類呢?有以下幾點 1 定義乙個靜態變數 2 建構函式私有化 3 提供乙個public 靜態方法,獲取這個例項 4 一定要做執行緒同步 public static class singleton p...
Java設計模式之單例模式
說到單例模式 大家一定非常熟悉 這是最常見也是設計模式中相對簡單 好理解的設計模式 今天就跟大家掰一掰單例模式 單例模式確保某個類只有乙個例項 應用場景 執行緒池 快取 等物件常常被設計成單例 然而單例分兩種 1 惡漢式 2 懶漢式 我們先來看下 惡漢式 public class singleton...