Java設計模式之單例模式

2021-08-17 17:51:20 字數 1278 閱讀 8648

因某些需求,我們只需要某個類只有乙個例項,此時考慮單例模式。因此,單例模式具有以下幾種特點:

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