摘要:所以使用單例會更好的控制全局變量。懶加載單例模式多數(shù)都是在加載腳本的時候被創(chuàng)建出來。不過對于一些使用方式單例適合在用到的時候被加載,所以需要一個可以懶加載的單例。
單例
單例是一個全局變量,使用單例可以更好的控制全局變量,還可以利用分支技術(shù)來封裝瀏覽器之間的差異。網(wǎng)頁中使用全局變量由于可以被重寫風(fēng)險很大。所以使用單例會更好的控制全局變量。
懶加載單例模式多數(shù)都是在加載腳本的時候被創(chuàng)建出來。不過對于一些使用方式單例適合在用到的時候被加載,所以需要一個可以懶加載的單例。
分支是一種區(qū)分運(yùn)行環(huán)境差異的技術(shù),更加有效的針對加載的環(huán)境來定制代碼,達(dá)到更好的靈活性。
代碼var os = require("os"); Singleton = (function () { var uniqueInstance; // 單例實體 constructor = function () { // 單例初始化 return function Singleton () { var count = 10; function initCount(){ count = 10; } this.getCount = function () { return count; } this.setCount = function (value) { count = value; }; this.init=function(){ initCount(); } }; }(); return { getInstance: function () { if (!uniqueInstance) { // 判斷是否初始化過 uniqueInstance = new constructor(); } return (os.type()==="Windows_NT")?uniqueInstance:undefined;//單例分支使單例有更高的兼容性 } } })(); var S=Singleton .getInstance();//懶加載,在這里開始加載和創(chuàng)建實例。 console.log(S.count); console.log(S.getCount()); S.setCount(550); console.log(S.getCount()); //S.initCount(); S.init(); console.log(S.getCount());總結(jié)
單例主要在于代碼的整潔性,是全局變量變得可控,使用懶加載可以減少不必要的內(nèi)存消耗。分支提高不用環(huán)境的兼容性,只需判斷一次環(huán)境而不用在每次使用都判斷環(huán)境。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/87758.html
摘要:一什么是單例設(shè)計模式單例模式,也叫單子模式,是一種常用的軟件設(shè)計模式。在應(yīng)用這個模式時,單例對象的類必須保證只有一個實例存在。 一、什么是單例設(shè)計模式 單例模式,也叫單子模式,是一種常用的軟件設(shè)計模式。在應(yīng)用這個模式時,單例對象的類必須保證只有一個實例存在。 二、單例模式的技巧 利用$_instance私有變量來保存類的唯一實例化對象; 設(shè)計一個getInstance對外公開的函數(shù),...
摘要:工廠設(shè)計模式工廠設(shè)計模式,主要用于進(jìn)行實例化對象時的解耦操作,避免使用關(guān)鍵字實例化對象,通過反射,根據(jù)類名稱動態(tài)創(chuàng)建對象示例靜態(tài)工廠模式構(gòu)造方法私有化獲取指定類名稱的對象動態(tài)代理模式動態(tài)代理模式,主要用于對同一接口子類的相同邏輯進(jìn)行代理操作 工廠設(shè)計模式 工廠設(shè)計模式,主要用于進(jìn)行實例化對象時的解耦操作,避免使用new關(guān)鍵字實例化對象,通過反射,根據(jù)類名稱動態(tài)創(chuàng)建對象 示例: pa...
摘要:大潮來襲前端開發(fā)能做些什么去年谷歌和火狐針對提出了的標(biāo)準(zhǔn),顧名思義,即的體驗方式,我們可以戴著頭顯享受沉浸式的網(wǎng)頁,新的標(biāo)準(zhǔn)讓我們可以使用語言來開發(fā)。 VR 大潮來襲 --- 前端開發(fā)能做些什么 去年谷歌和火狐針對 WebVR 提出了 WebVR API 的標(biāo)準(zhǔn),顧名思義,WebVR 即 web + VR 的體驗方式,我們可以戴著頭顯享受沉浸式的網(wǎng)頁,新的 API 標(biāo)準(zhǔn)讓我們可以使用 ...
摘要:二為什么用單例實際項目中像數(shù)據(jù)庫查詢,日志輸出,全局回調(diào),統(tǒng)一校驗等模塊。單例模式的好處減少頻繁創(chuàng)建,節(jié)省了。因此在單例模式必須包含三要素私有化構(gòu)造函數(shù),私有化。 單例作為一個最經(jīng)典的設(shè)計模式之一,到底什么是單例?為什么要用單例?怎么設(shè)計單例?php中單例如何具體實現(xiàn)? 一、什么是單例 wiki百科:單例模式,也叫單子模式,是一種常用的軟件設(shè)計模式。 在應(yīng)用這個模式時,單例對象的類必須...
摘要:既能保證延遲加載,又能保證線程安全枚舉上面的四種方案都有兩個弊端需要額外的工作進(jìn)行序列化,否則每次反序列化的結(jié)果都是一個新的實例可通過反射機(jī)制強(qiáng)行調(diào)用私有構(gòu)造器實現(xiàn)創(chuàng)建多個對象而這種方案完美的解決了上述兩種問題 一.什么是單例模式? 單例是指在程序中某個類只能有一個實例,一些管理器和控制器常被設(shè)計成單例模式(如Spring容器的bean實例默認(rèn)都是單例模式存在的) 二.單例有什么好處?...
閱讀 2065·2021-11-22 09:34
閱讀 1278·2021-10-09 09:44
閱讀 3096·2021-09-29 09:35
閱讀 3686·2021-09-14 18:01
閱讀 1563·2021-08-16 10:49
閱讀 1170·2019-08-29 14:11
閱讀 909·2019-08-29 12:47
閱讀 3137·2019-08-26 13:47