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