java設計模式之單例模式

2021-08-14 16:53:37 字數 1546 閱讀 4024

模式:模式就是解決一類問題的固定步驟。

模式的概念最早起源於建築行業….

建房子的步驟都是一樣子:

打地基----->澆柱子------->蓋樓面--------->砌牆--------->封頂---->裝修-----入住
軟體行業中23種設計模式:

單例設計模式

模板設計模式

裝飾者設計模式

觀察者設計模式

工廠設計模式

單例設計模式的步驟:

私有化建構函式。

宣告本類的引用型別變數,但是不要建立物件,

提供公共靜態的方法獲取本類的物件,獲取之前先判斷是否已經建立了本類物件,如果已經建立了,那麼直接返回物件即可,如果還沒有建立,那麼先建立本類的物件,然後再返回。

懶漢**:

public

class lazy

}class students

/** 提供公共靜態的方法獲取本類的物件,

* 獲取之前先判斷是否已經建立了本類物件,

* 如果已經建立了,那麼直接返回物件即可,

* 如果還沒有建立,那麼先建立本類的物件,然後再返回。

*/public

static synchronized students getstudent()

return students;

}}

執行結果:

true

私有化建構函式。

宣告本類的引用型別變數,並且使用該變數指向本類物件。

提供乙個公共靜態的方法獲取本類的物件。

餓漢的單例**實現:

public

class hunger

}class car

private

static car car=new car(); //宣告本類的引用型別變數,並且使用該變數指向本類物件。

public

static car getcar()

}

執行結果:

true

1)餓漢是執行緒安全的,在類建立的時候就建立好了乙個靜態的物件讓系統使用,以後也不會發生改變。—– 懶漢模式在建立例項的時候如果不加上 synchronized 就會導致物件的訪問不是執行緒安全的

2)實現方式:懶漢是延時載入的,在需要的時候才會建立,但是餓漢模式是在虛擬機器啟動就建立,餓漢是不需要考慮執行緒安全的問題的,而且寫的格式也比較簡單。但實餓漢是在類載入的時候才建立物件,不管系統會不會用都會建立乙個例項的物件,這就導致了記憶體的浪費。

3)與現實中的比較:

懶漢模式:乙個人回家餓了,飯桌上有乙個冷的饅頭,當加熱後你才會吃

餓漢模式:看到饅頭是不管是不是熱的都直接拿起來吃掉。

java設計模式之單例模式

單位面試題目中有一道關於單例模式的題目.大多數參加筆試的同事都會寫出getinstance這個函式,但是當我問起什麼情況下需要使用單例 單例具體有什麼好處的時候 static函式也可以構建唯一例項,為什麼還需要單例.從使用單例的經驗來看,如下場景下,個人感覺應該使用單例 1.如果需要構建乙個工具類,...

java設計模式 之 單例模式

單例模式 有些類在程式執行過程中只需要儲存乙個例項,比如檔案管理類,音訊管理類,那麼我們如何實現乙個單例類呢?有以下幾點 1 定義乙個靜態變數 2 建構函式私有化 3 提供乙個public 靜態方法,獲取這個例項 4 一定要做執行緒同步 public static class singleton p...

Java設計模式之單例模式

說到單例模式 大家一定非常熟悉 這是最常見也是設計模式中相對簡單 好理解的設計模式 今天就跟大家掰一掰單例模式 單例模式確保某個類只有乙個例項 應用場景 執行緒池 快取 等物件常常被設計成單例 然而單例分兩種 1 惡漢式 2 懶漢式 我們先來看下 惡漢式 public class singleton...