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

資訊專欄INFORMATION COLUMN

JavaScript設(shè)計(jì)模式-第一部分:?jiǎn)卫J?、組合模式和外觀模式

betacat / 508人閱讀

摘要:但是,這并不是采用單例的唯一原因。使用命名空間單例模式也被稱為模塊設(shè)計(jì)模式。函數(shù)內(nèi)部聲明了一些局部函數(shù)和或變量。緊隨函數(shù)聲明放置即可立即執(zhí)行外部函數(shù),并將所得的對(duì)象文字費(fèi)賠給變量。

JavaScript設(shè)計(jì)模式-第一部分:?jiǎn)卫J健⒔M合模式和外觀模式

設(shè)計(jì)模式是一些可靠的編程方式,有助于保證代碼更加易于維護(hù)、擴(kuò)展及分離,所有設(shè)計(jì)模式在創(chuàng)建大型JavaScript應(yīng)用程序時(shí)均不可或缺

單例模式

單例模式是指在您要確保始終只創(chuàng)建一個(gè)對(duì)象實(shí)例時(shí)使用的設(shè)計(jì)模式。在面向?qū)ο蟮慕?jīng)典編程語(yǔ)言中,創(chuàng)建單例模式背后的概念多少有點(diǎn)讓人難以理解,因?yàn)槠渲邪粋€(gè)同時(shí)具有靜態(tài)及非靜態(tài)屬性和方法的類。但本文主要討論JavaScript,因此,由于JavaScript是一種不包含真正類的動(dòng)態(tài)語(yǔ)言,因此JavaScript版本的單例模式極其簡(jiǎn)單。

為什么需要采用單例模式?
在我開(kāi)始介紹實(shí)施細(xì)節(jié)之前,我需要探討一下為什么單例模式對(duì)于應(yīng)用程序非常有用。它能夠確保您只有一個(gè)對(duì)象實(shí)例能夠?qū)嶋H派上用場(chǎng)。在服務(wù)器端語(yǔ)言中,您可能會(huì)使用單例處理數(shù)據(jù)庫(kù)連接,這是由于為一個(gè)請(qǐng)求創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)連接純粹是一種資源浪費(fèi)。同樣,在前端JavaScript中,您可能會(huì)希望將負(fù)責(zé)處理所有AJAX請(qǐng)求的某個(gè)對(duì)象設(shè)置為單例。規(guī)則非常簡(jiǎn)單:如果每m次創(chuàng)建新實(shí)例時(shí),實(shí)例的功能均完全相同,那么將其設(shè)置為單例。

但是,這并不是采用單例的唯一原因。至少在JavaScript中,單例可讓您保證命名空間對(duì)象和函數(shù)井然有序,防止它們與全局命名空間混淆,您可能明白,這是一種可怕的想法,特別是在使用第三方代碼的情況下。使用命名空間單例模式也被稱為模塊設(shè)計(jì)模式。

展示單例模式
要?jiǎng)?chuàng)建單例,您只需創(chuàng)建一個(gè)對(duì)象文字。

var Singleton = {
    prop: 1,
    another_prop: "value",
    method: function() {...},
    another_method: function() {...}
};

您還可以創(chuàng)建具有私有屬性和方法的單例,但由于設(shè)計(jì)使用封閉函數(shù)和自調(diào)用匿名函數(shù),因而稍微有些難以理解。函數(shù)內(nèi)部聲明了一些局部函數(shù)和/或變量。然后,創(chuàng)建并返回一個(gè)對(duì)象文字,其中包含一些引用您在更大的函數(shù)范圍內(nèi)聲明的變量和函數(shù)方法。緊隨函數(shù)聲明放置()即可立即執(zhí)行外部函數(shù),并將所得的對(duì)象文字費(fèi)賠給變量。如果這些介紹讓你感到困惑,那么請(qǐng)看下面的代碼,隨后我將會(huì)作出進(jìn)一步的說(shuō)明。

var Singleton = (function() {
    var private_property = 0,
        private_method = function () {
            console.log("This is private");
        }
        
    return {
        prop: 1,
        another_prop: "value",
        method: function() {...},
        another_method: function() {...}
    }
}());

關(guān)鍵在于,當(dāng)通過(guò)某個(gè)變量所在函數(shù)前方的var聲明該變量時(shí),該變量只能在函數(shù)內(nèi)部通過(guò)該函數(shù)內(nèi)聲明的各函數(shù)(例如對(duì)象文字內(nèi)函數(shù))進(jìn)行訪問(wèn)。return語(yǔ)句可幫助我們回到在外部函數(shù)自行執(zhí)行后分配給單例的對(duì)象文字。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/81160.html

相關(guān)文章

  • JavaScript設(shè)計(jì)模式》讀后感 覺(jué)很復(fù)雜

    摘要:想繼續(xù)了解設(shè)計(jì)模式必須要先搞懂面向?qū)ο缶幊?,否則只會(huì)讓你自己更痛苦。創(chuàng)建型設(shè)計(jì)模式主要有簡(jiǎn)單工廠模式,工廠方法模式,抽象工廠模式,建造者模式,原型模式和單例模式,下面一一道來(lái)。而工廠方法模式本意是將實(shí)際創(chuàng)建對(duì)象的工作推遲到子類中。 接觸前端兩三個(gè)月的時(shí)候,那時(shí)候只是聽(tīng)說(shuō)設(shè)計(jì)模式很重要,然后我就去讀了一本設(shè)計(jì)模式的書(shū),讀了一部分,也不知道這些設(shè)計(jì)模式到底設(shè)計(jì)出來(lái)干嘛的,然后就沒(méi)再看了。后...

    e10101 評(píng)論0 收藏0
  • 【JS】常用設(shè)計(jì)模式

    摘要:常用設(shè)計(jì)模式大型單頁(yè)應(yīng)用里,復(fù)雜度上升到一定程度時(shí),沒(méi)有適當(dāng)?shù)脑O(shè)計(jì)模式進(jìn)行降耦,后續(xù)的開(kāi)發(fā)也難以下手。而設(shè)計(jì)模式正是為了降耦而存在。特點(diǎn)滿足單一職責(zé)原則使用代理模式,不在構(gòu)造函數(shù)中判斷是否已經(jīng)創(chuàng)建過(guò)該單例滿足惰性原則應(yīng)用彈出登陸窗口。 JS常用設(shè)計(jì)模式 大型單頁(yè)應(yīng)用里,復(fù)雜度上升到一定程度時(shí),沒(méi)有適當(dāng)?shù)脑O(shè)計(jì)模式進(jìn)行降耦,后續(xù)的開(kāi)發(fā)也難以下手。而設(shè)計(jì)模式正是為了降耦而存在。 單例模式 單...

    VishKozus 評(píng)論0 收藏0
  • 前端設(shè)計(jì)模式

    摘要:作為一個(gè)前端新人,學(xué)習(xí)了設(shè)計(jì)模式以后,希望能從源頭上,用淺顯易懂的語(yǔ)言來(lái)解釋它。創(chuàng)建型設(shè)計(jì)模式創(chuàng)建型設(shè)計(jì)模式故名思意,這些模式都是用來(lái)創(chuàng)建實(shí)例對(duì)象的。這就是簡(jiǎn)單工廠模式。這就是工廠方法模式。 作為一個(gè)前端新人,學(xué)習(xí)了設(shè)計(jì)模式以后,希望能從源頭上,用淺顯易懂的語(yǔ)言來(lái)解釋它。當(dāng)然不一定是正確的,只是我個(gè)人對(duì)設(shè)計(jì)模式的一點(diǎn)淺顯理解。 創(chuàng)建型設(shè)計(jì)模式 創(chuàng)建型設(shè)計(jì)模式:故名思意,這些模式都是用來(lái)...

    newsning 評(píng)論0 收藏0
  • “大話”設(shè)計(jì)模式

    摘要:抽象工廠模式是為了處理對(duì)象具有等級(jí)結(jié)構(gòu)以及對(duì)象族的問(wèn)題。單例設(shè)計(jì)模式單例模式確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例,這個(gè)類成為單例類。 導(dǎo)語(yǔ):設(shè)計(jì)模式是無(wú)數(shù)碼農(nóng)前人在實(shí)際的生產(chǎn)項(xiàng)目中經(jīng)過(guò)不斷的踩坑、爬坑、修坑的經(jīng)歷總結(jié)出來(lái)的經(jīng)驗(yàn)教訓(xùn),經(jīng)過(guò)抽象之后表達(dá)成的概念。能夠幫助后來(lái)的設(shè)計(jì)者避免重復(fù)同樣的錯(cuò)誤或者彎路。我也抽空整理了一下設(shè)計(jì)模式,用自己的話總結(jié)了一下,自認(rèn)...

    coordinate35 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式整理

    摘要:寫(xiě)在前面設(shè)計(jì)模式是程序員通識(shí)知識(shí),熟練掌握并使用各種設(shè)計(jì)模式,可以體現(xiàn)一個(gè)程序員的工程開(kāi)發(fā)水平。我花了幾天時(shí)間,重溫并整理了多種設(shè)計(jì)模式,以為示例語(yǔ)言。節(jié)流模式對(duì)重復(fù)的業(yè)務(wù)邏輯進(jìn)行節(jié)流控制,執(zhí)行最后一次操作并取消其他操作,以提高性能。 寫(xiě)在前面 設(shè)計(jì)模式是程序員通識(shí)知識(shí),熟練掌握并使用各種設(shè)計(jì)模式,可以體現(xiàn)一個(gè)程序員的工程開(kāi)發(fā)水平。我花了幾天時(shí)間,重溫并整理了30多種設(shè)計(jì)模式,以Jav...

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

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

0條評(píng)論

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