国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Cheng_Gang / 3223人閱讀

摘要:?jiǎn)卫J绞纠枋鰡卫J降乃枷朐谟诒WC一個(gè)特定類僅有一個(gè)實(shí)例這意味著第二次創(chuàng)建一個(gè)新對(duì)象時(shí)應(yīng)該得到于與第一次創(chuàng)建的對(duì)象相同單例的實(shí)現(xiàn)邏輯用一個(gè)變量來(lái)標(biāo)志是否創(chuàng)建過(guò)對(duì)象如果是則在下次直接返回這個(gè)已經(jīng)創(chuàng)建好的對(duì)象案例假設(shè)有一個(gè)需求是點(diǎn)擊登錄需要

單例模式 示例 描述

單例模式的思想在于保證一個(gè)特定類僅有一個(gè)實(shí)例, 這意味著第二次創(chuàng)建一個(gè)新對(duì)象時(shí), 應(yīng)該得到于與第一次創(chuàng)建的對(duì)象相同

單例的實(shí)現(xiàn)邏輯: 用一個(gè)變量來(lái)標(biāo)志是否創(chuàng)建過(guò)對(duì)象, 如果是, 則在下次直接返回這個(gè)已經(jīng)創(chuàng)建好的對(duì)象.

    var obj;
    if(!obj) {
        obj = xxx;
    }
    return obj;
案例

假設(shè)有一個(gè)需求是點(diǎn)擊登錄需要彈出一個(gè)登錄框. 這個(gè)登錄窗在頁(yè)面里總是唯一的, 不可能同時(shí)存在兩個(gè)登錄窗口的情況

實(shí)現(xiàn)
var createLoginLayer = (function() {
    var div;
    return function() {

        if(!div) {
            div = document.createElement("div");
            div.innerHTML = "登錄窗";
            div.style.display = "none";
            document.body.appendChild( div );
        }

        return div;
    }
})();
通用的惰性單例
var getSingle = function(fn) {
    var result;
    return function() {
        return result || (result = fn.apply(this, arguments));
    }
};

上面使用一個(gè)變量result來(lái)保存fn的計(jì)算結(jié)果. result變量因?yàn)樯碓陂]包中, 它永遠(yuǎn)不會(huì)被銷毀. 在將來(lái)的請(qǐng)求中, 如果result已經(jīng)賦值, 那么它將返回這個(gè)值.

完善需求案例
var createLoginLayer = function() {
    var div = document.createElement("div");
    div.innerHTML = "登錄窗";
    div.style.display = "none";
    document.body.appendChild( div );
    return div;
};

var createSingleLoginLayer = getSingle( createLoginLayer );

document.getElementById("loginBtn").onclick = function() {
    var loginLayer = createSingleLoginLayer();
    loginLayer.style.display = "block";
};

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/80177.html

相關(guān)文章

  • Android中的設(shè)計(jì)模式單例模式

    摘要:總結(jié)單例是運(yùn)用頻率很高的模式,因?yàn)榭蛻舳藳](méi)有高并發(fā)的情況,選擇哪種方式并不會(huì)有太大的影響,出于效率考慮,推薦使用和靜態(tài)內(nèi)部類實(shí)現(xiàn)單例模式。 單例模式介紹 單例模式是應(yīng)用最廣的模式之一,也可能是很多人唯一會(huì)使用的設(shè)計(jì)模式。在應(yīng)用單例模式時(shí),單例對(duì)象的類必須保證只用一個(gè)實(shí)例存在。許多時(shí)候整個(gè)系統(tǒng)只需要一個(gè)全局對(duì)象,這樣有利于我么能協(xié)調(diào)整個(gè)系統(tǒng)整體的行為。 單例模式的使用場(chǎng)景 確保某個(gè)類有且...

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

    摘要:不符合設(shè)計(jì)模式中的單一職責(zé)的概念。引入代理實(shí)現(xiàn)單例模式引入代理實(shí)現(xiàn)單例模式的特點(diǎn)我們負(fù)責(zé)管理單例的邏輯移到了代理類中。的單例模式對(duì)比在以上的代碼中實(shí)現(xiàn)的單例模式都混入了傳統(tǒng)面向?qū)ο笳Z(yǔ)言的特點(diǎn)。 聲明:這個(gè)系列為閱讀《JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐》 ----曾探@著一書的讀書筆記 1.單例模式的特點(diǎn)和定義 保證一個(gè)類僅有一個(gè)實(shí)例,并且提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。 2.傳統(tǒng)面向?qū)?..

    selfimpr 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式-第一部分:單例模式、組合模式和外觀模式

    摘要:但是,這并不是采用單例的唯一原因。使用命名空間單例模式也被稱為模塊設(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í)均不可或缺 單...

    betacat 評(píng)論0 收藏0
  • Java設(shè)計(jì)模式-單例模式(Singleton Pattern)

    摘要:如果需要防范這種攻擊,請(qǐng)修改構(gòu)造函數(shù),使其在被要求創(chuàng)建第二個(gè)實(shí)例時(shí)拋出異常。單例模式與單一職責(zé)原則有沖突。源碼地址參考文獻(xiàn)設(shè)計(jì)模式之禪 定義 單例模式是一個(gè)比較簡(jiǎn)單的模式,其定義如下: 保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。 或者 Ensure a class has only one instance, and provide a global point of ac...

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

    摘要:在設(shè)計(jì)模式一書中,將單例模式稱作單件模式。通過(guò)關(guān)鍵字,來(lái)保證不會(huì)同時(shí)有兩個(gè)線程進(jìn)入該方法的實(shí)例對(duì)象改善多線程問(wèn)題為了符合大多數(shù)程序,很明顯地,我們需要確保單例模式能在多線程的情況下正常工作。 在《Head First 設(shè)計(jì)模式》一書中,將單例模式稱作單件模式。這里為了適應(yīng)大環(huán)境,把它稱之為大家更熟悉的單例模式。 一、了解單例模式 1.1 什么是單例模式 單例模式確保一個(gè)類只有一個(gè)實(shí)例,...

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

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

0條評(píng)論

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