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

資訊專欄INFORMATION COLUMN

JS設(shè)計模式-單例模式

sPeng / 3187人閱讀

摘要:單例模式是一個用來劃分命名空間并將一批屬性和方法組織在一起的對象,如果它可以被實例化,那么它只能被實例化一次。

單例模式是一個用來劃分命名空間并將一批屬性和方法組織在一起的對象,如果它可以被實例化,那么它只能被實例化一次。

原文鏈接

單例模式優(yōu)點

劃分命名空間,減少全局變量

組織代碼為一體,便于閱讀維護

并非所有的對象字面量都是單例,比如模擬數(shù)據(jù)
基本結(jié)構(gòu):
let Cat = {
   name: "Kitty",
   age: 3,
   run: ()=>{
      console.log("run");
   }
}

上面對象字面量結(jié)構(gòu)是創(chuàng)建單例模式的方法之一,但并不是單例模式,單例模式的特點是僅被實例化一次
要實現(xiàn)單例模式可以使用變量來標示該類是否被實例

基本實現(xiàn):
class Singleton {
    constructor(name){
        this.name = name;
        this.instance = null;
    }
    getName(){
        return this.name;
    }
}

let getInstance = (()=> {
    let instance;
    return (name)=> {
        if(!instance) {
            instance = new Singleton(name);
        }
        return instance;
    }
})()

let cat1 = getInstance("Hello");
let cat2 = getInstance("Kitty");
console.log(cat1 === cat2); //true
console.log(cat1.getName()) //"Hello"
console.log(cat2.getName()) //"Hello"

用instance變量標示實例Singleton,如果沒有實例創(chuàng)建一個,如果有則直接返回實例,由于僅能被實例化一次,cat2得到的實例和cat1相同

實用
在創(chuàng)建dom元素時為避免重復創(chuàng)建,可以使用單例模式創(chuàng)建

//單例模式
let createModal = function() {
    let content = document.createElement("div");
    content.innerHTML = "彈窗內(nèi)容";
    content.style.display = "none";
    document.body.appendChild(content);
}

//代理獲取實例
let getInstance = function(fn) {
    let result
    return function() {
        return result || (result = fn.apply(this,arguments));
    }
}

let createSingleModal = getInstance(createModal);
document.getElementById("id").onclick = function(){
    let modal = createSingleModal();
    modal.style.display = "block";
};

單例模式是一種簡單卻非常使用的設(shè)計模式,在需要時創(chuàng)建實例,并且只創(chuàng)建唯一一個

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

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

相關(guān)文章

  • JS 單例模式

    摘要:但是如何在對構(gòu)造函數(shù)使用操作符創(chuàng)建多個對象的時候僅獲取一個單例對象呢。單例的實例引用單例構(gòu)造函數(shù)單例私有屬性和方法暴露出來的對象改進之前在構(gòu)造函數(shù)中重寫自身會丟失所有在初始定義和重定義之間添加到其中的屬性。 1. 單例模式 單例模式 (Singleton) 的實現(xiàn)在于保證一個特定類只有一個實例,第二次使用同一個類創(chuàng)建新對象的時候,應該得到與第一次創(chuàng)建對象完全相同的對象。當創(chuàng)建一個新對象...

    姘存按 評論0 收藏0
  • 淺談js單例模式

    摘要:單例模式說到單例設(shè)計模式,中經(jīng)常使用的單例模式通常分兩種,懶漢模式和餓漢模式懶漢模式簡單寫了下私有化構(gòu)造函數(shù)在獲取實例的方法中返回實例化對象雖然很多大佬都寫過啦,但是小生為了加深記憶便再寫一遍雖然實現(xiàn)了單例模式,但是未考慮到線程安全,多個線 java單例模式 說到單例設(shè)計模式,Java中經(jīng)常使用java的單例模式通常分兩種,懶漢模式和餓漢模式 懶漢模式 class singleDemo...

    draveness 評論0 收藏0
  • js設(shè)計模式--單例模式

    摘要:文章系列設(shè)計模式單例模式設(shè)計模式策略模式設(shè)計模式代理模式概念單例模式的定義是保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。在開發(fā)中,單例模式的用途同樣非常廣泛。 前言 本系列文章主要根據(jù)《JavaScript設(shè)計模式與開發(fā)實踐》整理而來,其中會加入了一些自己的思考。希望對大家有所幫助。 文章系列 js設(shè)計模式--單例模式 js設(shè)計模式--策略模式 js設(shè)計模式--代理模式 概念...

    CloudwiseAPM 評論0 收藏0
  • js常用設(shè)計模式實現(xiàn)(一)單例模式

    摘要:什么是設(shè)計模式設(shè)計模式是一種能夠被反復使用,符合面向?qū)ο筇匦缘拇a設(shè)計經(jīng)驗的總結(jié),合理的使用設(shè)計模式能夠讓你得代碼更容易維護和可靠設(shè)計模式的類型共分為創(chuàng)建型模式,結(jié)構(gòu)型模式,行為型模式三種創(chuàng)建型模式創(chuàng)建型模式是對一個類的實例化過程進行了抽象 什么是設(shè)計模式 設(shè)計模式是一種能夠被反復使用,符合面向?qū)ο筇匦缘拇a設(shè)計經(jīng)驗的總結(jié),合理的使用設(shè)計模式能夠讓你得代碼更容易維護和可靠設(shè)計模式的類型...

    EscapedDog 評論0 收藏0
  • 從ES6重新認識JavaScript設(shè)計模式(一): 單例模式

    摘要:什么是單例模式單例模式是一種十分常用但卻相對而言比較簡單的單例模式。對象就是單例模式的體現(xiàn)??偨Y(jié)單例模式雖然簡單,但是在項目中的應用場景卻是相當多的,單例模式的核心是確保只有一個實例,并提供全局訪問。 1. 什么是單例模式? 單例模式是一種十分常用但卻相對而言比較簡單的單例模式。它是指在一個類只能有一個實例,即使多次實例化該類,也只返回第一次實例化后的實例對象。單例模式不僅能減少不必要...

    G9YH 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<