1. 程式人生 > 其它 >註解與反射04——設計模式

註解與反射04——設計模式

註解與反射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的方式,這種方式本身就是執行緒安全的!