我的設計模式之路 單例模式

2022-08-28 12:51:11 字數 1597 閱讀 7052

單例模式也稱作為單子模式,更多的也叫做單體模式。為軟體設計中較為簡單但是最為常用的一種設計模式。

下面是維基百科對單例模式的介紹:

在應用單例模式時,生成單例的類必須保證只有乙個例項的存在,很多時候整個系統只需要擁有乙個全域性物件,才有利於協調系統整體的行為。比如在整個系統的配

置檔案中,配置資料有乙個單例物件進行統一讀取和修改,其他物件需要配置資料的時候也統一通過該單例物件來獲取配置資料,這樣就可以簡化複雜環境下的配置

管理。單例模式的思路是:乙個類能返回乙個物件的引用(並且永遠是同乙個)和乙個獲得該例項的方法(靜態方法,通常使用 getinstance

名稱)。那麼當我們呼叫這個方法時,如果類持有的引用不為空就返回該引用,否者就建立該類的例項,並且將例項引用賦值給該類保持的那個引用再返回。同時將

該類的建構函式定義為私有方法,避免其他函式使用該建構函式來例項化物件,只通過該類的靜態方法來得到該類的唯一例項。

對於 js 來說,巨大的靈活性使得其可以有多種方式實現單例模式,使用閉包方式來模擬私有資料,按照其思路可得:

1

var single = (function()8

return

unique;9}

1011

function

construct()

1415

return

18 })();

對於大著 靈活 牌子的js來說,任何問題都能找到 n 種答案,只不過讓我自己去掂量孰優孰劣而已,下面就簡單的舉幾個使用閉包實現單例模式的方法,無非也就是將建立了的單例快取而已。

1

var single = (function()6

7 unique = new

constuct();89

return

unique;

10 })();

1

//單例模式23

var totalscore = (function

();8

this.score = args.score || 0;

9this.shatternumber = args.number || 1;

10};

1112

//例項容器

13var

instance;

1415

//獲取例項的方法

16//

返回singleton的例項

17var getinstance = function

(args)

21return

instance;

22};

2324

//totalscore單例方法

25var totalscoremethod =else

35},

3637

//減分數

38 subscore : function

(args)else

45},

46}

4748

return

5253 })()

我的設計模式學習之路1 單例模式

單例模式的特點 一.自動初始化 二.只有乙個例項 物件 三.允許整個系統訪問自己 四.私有的構造方法,不能被繼承 類圖 類圖用的是staruml這款軟體畫的,有興趣的可以用用,挺好用的 package com.service public class singleton public static ...

我理解的設計模式 單例模式

單例模式 singleton pattern 什麼是單例模式,四人幫的書裡面這麼定義 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。可以這麼理解 在乙個程序裡,這個類只會被例項化一次,而且可以很方便的被呼叫。實現 惡漢式 載入類的時候,在類的內部定義乙個例項,外部呼叫則開放給乙個靜態函式。...

我說設計模式 單例模式(Singleton)

單例模式 singleton 單例模式按照實現方式可以有三個類別 懶漢模式,餓漢模式和註冊模式。單例通常用於對唯一資源的管理,規定對特定資源只有乙個訪問例項介面。例如一夫一妻,一人一身份證等等。單例由於其唯一性必須具備以下特點 1 單例類只能有乙個例項。2 單例類必須自己建立自己的唯一例項。3 單例...