JavaScript 單例模式
單例模式是設計模式中最為簡單的一種,由名稱可以初步感受到它的作用。
此模式會確保一個類只有一個例項,並提供一個它的全域性訪問點。
下面通過一個簡單的程式碼例項來介紹一下它,程式碼如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html lang="en"> <head> <meta name="author" content="http://www.softwhy.com/" /> <meta charset="UTF-8" /> <title>單例模式</title> <style type="text/css"> div{color:red} </style> </head> <body> <button id="bt">檢視演示</button> <script type="text/javascript"> var createDiv = (function () { var div; return function () { if (!div) { div = document.createElement('div'); div.innerHTML = '螞蟻部落'; div.style.display = 'none'; document.body.appendChild(div); } return div; } })(); document.getElementById('bt').onclick = function () { var odiv = createDiv(); odiv.style.display = 'block' }; </script> </body> </html>
無論點選多少次按鈕,都會只生成一個div元素,程式碼還不夠好,下面進行一下改造:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html lang="en"> <head> <meta name="author" content="http://www.softwhy.com/" /> <meta charset="UTF-8" /> <title>單例模式</title> <style type="text/css"> div{color:red} </style> </head> <body> <button id="bt">登入</button> <script type="text/javascript"> var getSingle = function(fn) { var result; return function() { return result || (result = fn.apply(this, arguments)); } } //生成單例函式 var createDiv = getSingle(function() { var div = document.createElement('div'); div.innerHTML = '我是登入懸浮窗'; div.style.display = 'none'; document.body.appendChild(div); return div; }) document.getElementById('bt').onclick = function() { var odiv = createLoginLayer(); odiv.style.display = 'block'; } </script> </body> </html>
將上管理單例的邏輯從原來的程式碼中抽離出來,封裝在getSingle函式內部:
[JavaScript] 純文字檢視 複製程式碼var getSingle= function(fn) { var result; return function() { return result || (result = fn.apply(this, arguments)); } }
建立例項物件職責和管理單例職責分別放置在兩個方法裡,這兩個方法可以獨立變化互不影響。
相關文章
- javascript 模式(2)——單例模式JavaScript模式單例
- JavaScript單例模式概念與例項JavaScript單例模式
- javascript單例模式的理解JavaScript單例模式
- Javascript實現單例模式JavaScript單例模式
- javascript設計模式一: 單例模式JavaScript設計模式單例
- Javascript 設計模式之單例模式JavaScript設計模式單例
- Javascript設計模式之單例模式JavaScript設計模式單例
- Javascript設計模式(三)單例模式JavaScript設計模式單例
- javascript設計模式單例模式簡單介紹JavaScript設計模式單例
- 理解設計模式之單例模式(Javascript)設計模式單例JavaScript
- JavaScript設計模式初探--單例設計模式JavaScript設計模式單例
- JavaScript設計模式經典之單例模式JavaScript設計模式單例
- JavaScript設計模式學習之單例模式JavaScript設計模式單例
- JavaScript中單例模式這樣用JavaScript單例模式
- 從JavaScript學習設計模式-02單例模式JavaScript設計模式單例
- 深入理解 JavaScript 單例模式 (Singleton Pattern)JavaScript單例模式
- 《JavaScript設計模式與開發實踐》模式篇(1)—— 單例模式JavaScript設計模式單例
- 單例模式單例模式
- JavaScript設計模式系列三之單例模式(附案例原始碼)JavaScript設計模式單例原始碼
- Javascript設計模式Revealing Module 揭示模式單例模式詳解JavaScript設計模式單例
- 設計模式-單例模式設計模式單例
- [設計模式] 單例模式設計模式單例
- 設計模式 —— 單例模式設計模式單例
- 設計模式(單例模式)設計模式單例
- 建立型模式:單例模式模式單例
- 創造模式 單例模式模式單例
- 設計模式——單例模式設計模式單例
- 設計模式--單例模式設計模式單例
- 建立型模式————單例模式模式單例
- 單例模式解析單例模式
- 單例模式(3)單例模式
- php單例模式PHP單例模式
- JS 單例模式JS單例模式
- java單例模式Java單例模式
- iOS - 單例模式iOS單例模式
- java 單例模式Java單例模式
- 您的單例模式,真的單例嗎?單例模式
- 單例模式,真不簡單單例模式