一天乙個設計模式 單例模式

2021-09-29 02:35:28 字數 1146 閱讀 8490

1. 餓漢模式

public

class

sprivate

static s s=

news()

;public

static s get()

}

執行緒安全,載入時就初始化,根據需求來,此種用法最簡單
2. 懶漢模式
public

class

sprivate

static s s;

public

static s get()

return s;

}}

執行緒不安全,會出現多個執行緒同時進入if判斷

方法上加 synchronized 字段,可以執行緒安全,但是多執行緒效能較低,因為即使以已經建立過示例,也會鎖住該方法

3. 雙重檢驗鎖
public

class

sprivate

volatile

static s s;

public

static s get()

}}return s;

}}

執行緒安全。
如果不加第二個null檢驗,也會出現建立多個例項的情況,多個執行緒可以同時進入第乙個null檢測**塊,都會執行建立語句,只是順序執行而已

如果不加volatile 關鍵字,則第二個null檢測時,s可能是執行緒棧內的副本,不是主記憶體中的值,而主記憶體中的值已被其他執行緒例項化,會出現多次建立例項。

4. 靜態內部類
public

class

sprivate

static

class

ipublic

static s get()

}

執行緒安全
5. 列舉類
public

enum s

}

//呼叫

main()

通俗易懂 一天乙個設計模式 單例模式

前言 正文 什麼是單例模式?有趣的小豬搶蛋糕 單例模式 想看通俗易懂的工廠模式戳這裡。設計模式代表了前人的最佳實踐,在水平達到了一定的層級之後,總是要接觸設計模式的。本文旨在使用通俗易懂的例子,幫助初學者理解單例模式。單例模式顧名思義,乙個類僅能有乙個例項。所以他的物件不能被手動例項化 就無法保證只...

一天乙個設計模式 建造者模式

這個模式和工廠模式很像,建造者 builder 模式和工廠模式的關注點不同 建造者模式注重零部件的組裝過程,而工廠方法模式更注重零部件的建立過程,但兩者可以結合使用。舉個栗子,stringbuilder public class abstractstringbuilder char c privat...

一天乙個設計模式 原型模式

原型模式即通過乙個已有的物件clone出乙個一樣的物件,當直接建立該物件非常消耗資源時則可以考慮原型模式。實現轉殖操作,繼承 cloneable,重寫object的 clone 轉殖分深度轉殖和淺度轉殖 淺度轉殖 只把需要轉殖物件的成員變數的值複製過去,如果是引用變數也只會複製引 用位址,指向的和原...