java23種設計模式之單例設計模式

2021-08-04 07:37:31 字數 1404 閱讀 7463

1、單例設計模式的概念:

單例模式確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。在計算機系統中,執行緒池、快取、日誌物件、對話方塊、印表機、顯示卡的驅動程式物件常被設計成單例。

2、單例設計模式的作用:解決乙個類在記憶體中只存在乙個物件,想要保證物件的唯一。

① 為了避免其他程式過多的建立該類物件。禁止其他程式建立該類物件。

②為了其他程式可以訪問該類物件,在本類中自定義乙個物件。

③方便其他程式對自定義類的物件的訪問,對外提供一些訪問方式。

3、**解讀

①將建構函式私有化

②在類中建立乙個私有的本類物件

③提供乙個用類名呼叫的公有方法獲取該物件。

1)餓漢式在類建立的同時就已經建立好乙個靜態的物件供系統使用,以後不再改變,所以天生是執行緒安全的。

//餓漢式單例類.在類初始化時,已經自行例項化   

public class singleton1

private static final singleton1 single = new singleton1();

//靜態工廠方法

public static singleton1 getinstance()

}

2)懶漢式

//懶漢式單例類.在第一次呼叫的時候例項化自己   

public class singleton

private static singleton single=null;

//靜態工廠方法

public static singleton getinstance()

return single;

} }

懶漢式單例的實現沒有考慮執行緒安全問題,它是執行緒不安全的,併發環境下很可能出現多個singleton例項,而且懶漢式有延遲載入,在第一次呼叫的時候例項化物件,但是在第一次呼叫的時候才會初始化。

4、所以說懶漢式和餓漢式的區別:

1)餓漢式在類載入的時候,就已經初始化了,所以是執行緒安全的,且速度快;

缺點是會占用一些記憶體;

2)懶漢式延遲載入,不是執行緒安全的,效率慢,但不會占用太多記憶體。

懶漢式需要注意的是執行緒安全的問題,所以推薦靜態內部類

public class singleton     

private singleton (){}

public static final singleton getinstance()

}

這種懶漢式方式利用了classloader的機制來保證初始化instance時只有乙個執行緒,所以也是執行緒安全的,同時沒有效能損耗

推薦文章:很全面的學習總結,學習的方法也很好

Java23種設計模式

定義 設計模式 design pattern 是一套反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易被他人理解 保證 可靠性。單例模式,特點 全域性只有乙個例項。定義 單例模式,也叫單子模式,是一種常用的軟體設計模式。在應用這個模式的時候,單例物件的類必須...

Java23種設計模式

建立型模式,共五種 工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式。結構型模式,共七種 介面卡模式 裝飾器模式 模式 外觀模式 橋接模式 組合模式 享元模式。行為型模式,共十一種 策略模式 模板方法模式 觀察者模式 迭代子模式 責任鏈模式 命令模式 備忘錄模 式 狀態模式 訪問者模式 中...

Java 23種設計模式

型別 模式建立型工廠模式 抽象工廠模式 單例模式 建造者模式 原型模式 結構型介面卡模式 橋接模式 組合模式 外觀模式 裝飾者模式 享元模式 模式 行為型責任鏈模式 命令模式 直譯器模式 迭代模式 中介者模式 備忘錄模式 觀察者模式 狀態模式 策略模式 模板方法模式 訪問者模式 模式說明 工廠模式 ...