js 設計模式 第五章 單例模式

2021-06-10 07:18:40 字數 926 閱讀 3493

單例模式

why?

1 解決global variables 過多的問題。***。__.dom,__.event,這裡__就是個單例物件,所有的dom及event都放在__裡面,不用再放在global域

how?

將用到的屬性和方法都放在乙個單例裡面,這樣,這些屬性和方法將不會汙染全域性空間

what?

最簡單的單例模式

var __ =

};

這個例子中,所有的成員都是通過__來訪問的。

單例生成了乙個名字空間,所有你的屬性和方法都放在裡面,這樣就有效減少了同別的js**衝突。名字空間,有利於保護自己的屬性和方法,避免其他的屬性和方法覆蓋了名字空間裡面的屬性。

傳統型別的單例有兩部分:1 擁有屬性和方法的物件本身 2 用來訪問這個物件的變數,這個變數往往是global域的,這樣單例才能在頁面的任何區域都能被訪問。

利用閉包,可以產生擁有私有屬性的單例

var dataparser = (function()

return

}})();

上面講的單例,都是頁面載入的時候都執行了。也就是不是按需載入的。

lazy instantiation

var dataparser = (function()

return }}

return

return uniqueinstance;}}

})();

把前面乙個**簡單包裝下,就出來了。

第一步:講前面例子的**放到constructor函式中。

第二步:讓匿名函式返回getinstance方法,在裡面實現lazy instantiation

單例作為名字空間的作用,應該多使用。

Head First 設計模式之第五章 單例模式

在物件導向中,乙個類可以建立無數個物件,但有時候需要對類新增一種限制,即 這個類只能建立乙個物件。這初次聽起來感覺有點奇怪,但是仔細一想,還是有很多場景需要滿足這樣的需求的。如日誌類 狀態機類 引數配置類等等。如日誌類,它只可以建立乙個物件,每次使用時,就直接呼叫這個物件,將所有資訊均輸出到同乙個日...

第五章 模式匹配

第五章 模式匹配 b 匹配乙個字元邊界 t 匹配乙個普通水平製表字元 bar 匹配的是barrr 5.2 模式匹配操作符 m 用於匹配乙個模式,s 用於將某個符合模式的子字元竄代換為某個子串 每次成功匹配了乙個模式 包括替換中的模式 操作符都會把變數 分別設定為 匹配內容左邊內容,匹配的內容和匹配內...

設計模式精解 第五章 設計模式簡介

首先,設計模式和物件導向設計是互為補充.對於設計模式的資料,看上去抽象,甚至比較哲學.但是我們需要理解他們.要學習的是設計模式的思想.設計模式是從建築學和人類學發展起來的.這兩者都認為 美 的,優秀的設計是有客觀的標準的.christopher alexander這個建築師對設計模式的研究起了很大的...