Java設計模式之單例模式 惡漢式和懶漢式

2021-07-02 04:32:47 字數 2086 閱讀 3545

/*

* 單例模式:

*         餓漢式:類一載入就建立物件

*         懶漢式:用的時候,才去建立物件

* 面試題:單例模式的思想是什麼?寫乙個**體現(我們最好寫懶漢式的單例模式給面試官,這個才是他想要的答案)

*         開發使用:惡漢式(是不會出問題的單例模式)

*         面試時寫懶漢式(可能會出現問題的單例模式)

*             a:懶漢式(延遲載入)

*             b:執行緒安全問題

*                 a:是否多執行緒環境   是

*                 b:是否有共享資料  是

*                 c:是否有多條語句操作共享資料  是*/

單例模式的一般步驟:

1、私有化構造方法使其外部不能直接建立物件保證物件的唯一性

2、私有化和靜態化自己內部的物件(因為外部不能new物件只能內部來new了)

3、提供乙個公共的靜態的方法給外部直接使用自己內部建立的物件

單例模式之惡漢式源**:

package 建立型_單例模式_餓漢式;

/* * 單例模式之惡漢式:類一載入就建立物件

*/public class student

//外部不能new物件,只能自己內部new乙個student物件了

//這個要static化,因為下面要提供乙個static方法對外界直接訪問,而static方法只能訪問static成員

//而且為了外部不能修改這個物件為null(student.student=null,沒意義),所以這個物件也要private

private static student student = new student();

//提供公共的訪問方式,內部new的物件為了外部使用許提供乙個public方法獲取物件例項

//但是注意因為外部不能new物件,則不能通過物件名.方法獲取student類的內部例項,所有要把這個公共方法靜態化statis

//static化之後因為static方法不能直接方法普通成員方法,只能訪問靜態成員,所以要將new的物件static話

public static student getstudent()

}

package 建立型_單例模式_餓漢式;

/* * 單例模式:保證類在記憶體中只有乙個物件

* * 如何保證淚在記憶體中只有乙個物件呢?

* a:把構造方法私有化

* b:在成員位置自己建立乙個物件

* c:通過乙個公共的方法提供訪問

*/public class studentmain

}

單例模式之懶漢式源**:

package 建立型_單例模式_懶漢式;

/* * 單例模式:

* 餓漢式:類一載入就建立物件

* 懶漢式:用的時候,才去建立物件

* 面試題:單例模式的思想是什麼?傾斜乙個**體現

* 開發使用:惡漢式(是不會出問題的單例模式)

* 面試時寫懶漢式(可能會出現問題的單例模式)

* a:懶漢式(延遲載入)

* b:執行緒安全問題

* a:是否多執行緒環境 是

* b:是否有共享資料 是

* c:是否有多條語句操作共享資料 是

*/public class teacher

//私有 static teacher類物件的引用teacher 需要的時候才new物件,初值為null

private static teacher teacher = null;

public synchronized static teacher getteacher()

return teacher;

}}

package 建立型_單例模式_懶漢式;

public class teachermain

}

java設計模式之單例模式

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

java設計模式 之 單例模式

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

Java設計模式之單例模式

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