成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

JS 設(shè)計(jì)模式 四(單例)

1fe1se / 1937人閱讀

摘要:所以使用單例會(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

相關(guān)文章

  • PHP設(shè)計(jì)模式單例模式(Singleton)

    摘要:一什么是單例設(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ù),...

    余學(xué)文 評(píng)論0 收藏0
  • 常用設(shè)計(jì)模式

    摘要:工廠設(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...

    fizz 評(píng)論0 收藏0
  • JS或Jquery

    摘要:大潮來(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)讓我們可以使用 ...

    CatalpaFlat 評(píng)論0 收藏0
  • 理解php單例模式

    摘要:二為什么用單例實(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)必須...

    xi4oh4o 評(píng)論0 收藏0
  • 設(shè)計(jì)模式(1)單例模式

    摘要:既能保證延遲加載,又能保證線程安全枚舉上面的四種方案都有兩個(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)都是單例模式存在的) 二.單例有什么好處?...

    zhichangterry 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<