模式:模式就是解決一類問題的固定步驟。
模式的概念最早起源於建築行業….
建房子的步驟都是一樣子:
打地基----->澆柱子------->蓋樓面--------->砌牆--------->封頂---->裝修-----入住
軟體行業中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...