註解與反射04——設計模式
阿新 • • 發佈:2022-04-11
註解與反射04——設計模式
4.1 介紹
●什麼是設計模式
●一套被反覆使用、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。簡單理解:
特定問題的固定解決方法。
●好處:使用設計模式是為了可重用程式碼、讓程式碼更容易被他人理解、保證代
碼可靠性、重用性。
●在Gof的《設計模式》書中描述了23種設計模式
4.2 工廠設計模式
簡介
設計
- 父類產品
- 子類產品
mouse:
fan:
U盤:
- 添加工廠角色
- 新增客戶程式(使用工廠)
如果我們需要新增一個鍵盤產品:
此時工廠也需要改:
反射優化工廠模式
- 優化工廠角色
- 優化客戶程式:
新增一個屬性檔案:
使用Properties獲取不同的產品
注意此時的choice型別不再是int型別而是String型別
如果在要新增一個型別Mouse2
此時我們需要在屬性檔案里加以改變:
4.3 單例模式
單例(Singleton) :只允許建立-一個該類的物件。
方式1:餓漢式(類載入時建立,天生執行緒安全)
餓漢式單例
(1)首先建立一個常量
(2)構造方法改成私有的。類外部不能建立物件
(3)通過一個公開的力法。返回這個物件
- 測試單例
結果:執行緒的hashcode總是一個!
方式2: 懶漢式(使用時建立,執行緒不安全,加同步)
懶漢式單例
(1)首先建立一個物件,賦值為null
(2)構造方法改成私有的。類外部不能建立物件
(3)通過一個公開的力法。返回這個物件
為了避免執行緒不安全的問題,我們可以採用上面的synchronized的方式,也可以加同步程式碼塊,使用類的類物件(因為類的類物件只有一個,是唯一的!)作為鎖:
因為多執行緒下面,每進來一個執行緒就要判斷這個鎖能不能用,效率比較低,此時,我們可以在鎖外面加一個判斷,只要這個instance執行過了,別的執行緒就沒有必要判斷這個鎖
方式3: 懶漢式(使用時建立,執行緒安全)
包含了一個靜態內部類,這個靜態內部類,在我們外部類的時候,沒有執行靜態類裡面的內容,這個靜態內部類也是不會執行的,只有我們呼叫instance時候,使用了instance中的s,靜態內部類中採用new的方式,這種方式本身就是執行緒安全的!