一看就懂的設計模式 單例模式(03)

2021-10-09 07:20:06 字數 2038 閱讀 3193

單例模式(singleton design pattern)屬於建立型設計模式,理解起來非常簡單。乙個類只允許建立乙個物件(或者例項),那這個類就是乙個單例類,這種設計模式就叫作單例設計模式,簡稱單例模式。單例模式是一種建立型設計模式。

交響樂團的指揮就是乙個單例模式,乙個交響樂團只有乙個指揮,所有的樂團成員都根據指揮的指示演奏(這個指揮就是全域性訪問節點)

}執行結果如下:

單例模式,相同的例項

using system;

namespace singleton

private

static

singleton _instance;

private

static

readonly

object _lock =

newobject()

;public

static

singleton

getinstance()

}return _instance;}}

class

program

else}}

}

執行結果如下:

單例模式,相同的例項

上面的**每次呼叫都需要加鎖,影響了程式的執行效率,通過雙重鎖定,可以提公升執行效率,**如下:

using system;

namespace singleton

private

static

singleton _instance;

private

static

readonly

object _lock =

newobject()

;public

static

singleton

getinstance()

}}return _instance;}}

class

program

else}}

}

執行結果如下:

單例模式,相同的例項

在自己被載入時就將自己例項化的方式被稱為餓漢式單例,前面介紹的在自己被第一次引用時才會將自己例項化的方式稱為懶漢式單例,下面**演示了餓漢式單例:

using system;

namespace singleton

//在第一次引用類的任何成員時建立例項

private

static

readonly

singleton _instance =

newsingleton

;private

static

readonly

object _lock =

newobject()

;public

static

singleton

getinstance()

}class

program

else}}

}

執行結果如下:

單例模式,相同的例項

一看就懂的設計模式(二,工廠模式)

本文是在簡單工廠的基礎上進行編寫的,可以參考簡單工廠比較學習,看看都有哪些異同。namespace 工廠模式 先定義乙個基類 public class animal 子類繼承基類 public class dog animal public class pig animal 工廠類 public i...

一看就懂的設計模式(四,策略模式)

當我們有很多演算法策略時,比如 根據不同節慶有不同的優惠活動,我們就會使用到不同的演算法策略對商品進行優惠,就可以考慮用策略模式。如下 namespace diagrammode 定義抽象策略類。public abstract class strategy 具體策略類 public class st...

一看就懂的SwitchHosts

switchhosts 是乙個管理 切換多個 hosts 方案的工具。它是乙個免費開源軟體。日常開發工作中,我們可能經常需要切換各種 hosts 繫結,比如在本地開發時可能需要乙個開發環境的 hosts 繫結方案,發布到測試環境後又有乙個測試環境的 hosts 繫結方案,然後可能還有乙個預發布環境,...