Java設計模式之單例模式

2021-08-20 09:43:47 字數 1319 閱讀 5623

單例模式核心思想:某些類的物件在建立的時候 ,在系統記憶體始終只有乙個物件!

1)餓漢式    2)懶漢式(類似於多執行緒環境..)

在載入那個類的時候,物件的建立工作就已經完成了!

1)自定義乙個類,將無參構造私有化

2)在成員位置建立物件

3)提供公共靜態功能,在裡面返回該類物件

程式示例

public class student     

//成員位置建立該類的例項

//靜態方法只能訪問靜態變數

//加入私有修飾

private static student s = new student() ; //靜態的類變數

//提供乙個公共的成員方法

public static student getstudent()

}

測試程式

public static void main(string args)
需要時在建立物件

符合單例模式核心思想

1)自定義乙個類,將無參構造私有化

2)在成員位置宣告變數

3)提供公共靜態功能,在裡面判斷的建立該類物件,返回該類物件

程式示例

public class teacher     

//在成員位置宣告變數,只宣告不建立

//私有化

private static teacher t = null ;

//提供公共的靜態功能

//靜態的同步方法 (鎖物件: 類名.class)

public synchronized static teacher getteacher()

return t ;

}}

測試程式

public static void main(string args)

餓漢式屬於立即載入,所以不存在在多執行緒中出現錯誤的情況;

但是懶漢式的話就有可能出現問題了,如多乙個執行緒執行到判斷是否為空的語句if(singledemo==null)的時候,當前執行緒被阻塞,而第二個執行緒進來了,這樣的話第二個執行緒建立了新的物件,那麼第乙個執行緒被喚醒的時候又建立多乙個物件,這樣在記憶體中就存在了兩個物件,明顯和單例設計模式不符,所以使用了synchronized保證每次只有乙個執行緒來操作。

1)定義個類,將該類的無參構造方法私有化

2)在該類的成員位置建立該類物件 並且一定要私有化,防止外界更改這個物件

3)在該類中提供靜態成員方法(返回值就是建立的那個物件),能被當前類直接呼叫,static修飾

java設計模式之單例模式

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

java設計模式 之 單例模式

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

Java設計模式之單例模式

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