1.單例模式

設(shè)計模式并非是難以理解, 或是難以應(yīng)用到實踐中的, 相反的, 設(shè)計模式恰恰代表了某些場景下的最佳實踐! 這些設(shè)計模式通常被有經(jīng)驗的開發(fā)者們所采用。
設(shè)計模式是開發(fā)者們在開發(fā)過程中面臨的一般問題的解決方案。 這些解決方案是眾多開發(fā)者們經(jīng)過長時間的實驗和錯誤所總結(jié)出來的
本文將講解前端 (javascript) 的設(shè)計模式概念!


傳統(tǒng)開發(fā)工程中, 單例模式就是保證一個類只有一個實例, 在javascript中, 單例作為一個命名空間提供者, 在全局變量或局部變量中提供一個唯一的訪問點即可, 如以下實現(xiàn)代碼

  • 使用字面量形式實現(xiàn)單例模式
var single = {
    name: '單例模式',
    toString: function() {
        return 'Hello world!';
    }
}
  • 或是使用構(gòu)造函數(shù)形式實現(xiàn)單例模式
function Single(name) {
    var that = this;
    this.name = name || '單例模式';

    // 只能夠創(chuàng)建一次, 第二次將返回實例
    Single = function() {
        return that;
    }
}
        
Single.prototype.toName = function() {
    return this.name;
}

var single = new Single;
  • 或是使用閉包, 只暴露某些屬性和方法
var single = (function() {
    var name = '單例模式';
    var a = 100;
    var b = 200;
    var toName = function() {
        return name + a;
    }

    return {
        name: name,
        toName: toName
    }
})();

無論如何實現(xiàn)單例模式, 但在具體工程中, 只會存在一個Single實例, 即為單例模式

使用場景

單例模式一般使用場景為系統(tǒng)中不會重復(fù)創(chuàng)建的模塊, 如頁面開始時, 會加載一些配置和屬性, 這些配置和屬性是一定存在且只需要一份就夠了, 不會存在需要多分的情況, 這時就適合使用單例模式

注意事項

單例模式一般不推薦使用構(gòu)造函數(shù)生成, 因為使用字面量速度會比構(gòu)造函數(shù)快, 而且字面量本身強(qiáng)調(diào)了這個對象的唯一性, 但具體實現(xiàn)方法還是要根據(jù)場景不同而選擇不同的實現(xiàn)方式

其他設(shè)計模式

構(gòu)造函數(shù)模式: http://www.itdecent.cn/p/cf809d980459
建造者模式: http://www.itdecent.cn/p/70cf4bb80549
簡單工廠模式: http://www.itdecent.cn/p/4293450926c2
抽象工廠模式: http://www.itdecent.cn/p/d6138f36e6e2
裝飾者模式: http://www.itdecent.cn/p/16cf284ab810
外觀模式: http://www.itdecent.cn/p/179ae2a13c59

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容