/*
* 單例模式:
* 餓漢式:類一載入就建立物件
* 懶漢式:用的時候,才去建立物件
* 面試題:單例模式的思想是什麼?寫乙個**體現(我們最好寫懶漢式的單例模式給面試官,這個才是他想要的答案)
* 開發使用:惡漢式(是不會出問題的單例模式)
* 面試時寫懶漢式(可能會出現問題的單例模式)
* 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...