來個單例模式

一、實現(xiàn)一個單例并不復雜,無非就是用一個變量標志當前是否已經(jīng)為某個類創(chuàng)建過對象,如果是,下次獲取該類的實例時,直接返回之前創(chuàng)建的對象。下面簡單實現(xiàn)一個標準的單例模式。
var Singleton = function (name) {
    this.name = name;
    this.instance = null;
};

Singleton.prototype.getName = function(){
    console.log(this.name);
};

Singleton.getInstance = function(name) {
    //console.log(this.instance);
    if(!this.instance){ 
        this.instance = new Singleton(name);
    }
    return this.instance;
};

var a = Singleton.getInstance('aa');
var b = Singleton.getInstance('bb');
console.log(b === s); //true

<b>二、如果引進代理模式,單例模式的代碼指責就更情清晰了。</b>

 var CreateDiv = function (html) {
    this.html = html;
    this.init();
};

CreateDiv.prototype.init = function() {
    var div = document.createElement('div');
    div.innerHTML = this.html;
    document.body.appendChild(div);
};

var ProxySingletonCreateDiv = (function(){
    var instance;
    return function(html) {
        if(!instance){
            instance = new CreateDiv(html);
        }
        return instance;
    }
})();

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

相關閱讀更多精彩內(nèi)容

  • 單例模式(SingletonPattern)一般被認為是最簡單、最易理解的設計模式,也因為它的簡潔易懂,是項目中最...
    成熱了閱讀 4,545評論 4 34
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評論 19 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內(nèi)部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,740評論 18 399
  • 1 單例模式的動機 對于一個軟件系統(tǒng)的某些類而言,我們無須創(chuàng)建多個實例。舉個大家都熟知的例子——Windows任務...
    justCode_閱讀 1,559評論 2 9
  • 設計模式匯總 一、基礎知識 1. 設計模式概述 定義:設計模式(Design Pattern)是一套被反復使用、多...
    MinoyJet閱讀 4,094評論 1 15

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