亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

es6實(shí)現(xiàn)單例模式及其應(yīng)用

Joonas / 3526人閱讀

摘要:指向的是唯一實(shí)例化的對象返回結(jié)果是。實(shí)現(xiàn)方式創(chuàng)建類。構(gòu)造一個(gè)廣為人知的接口,供用戶對該類進(jìn)行實(shí)例化單例模式應(yīng)用實(shí)例我們用一個(gè)生活中常見的一個(gè)場景來說明單例模式的應(yīng)用。這就是單例模式的典型應(yīng)用。

單例模式的定義是:保證一個(gè)類僅有一個(gè)一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。

單例模式能在合適的時(shí)候創(chuàng)建對象,并且創(chuàng)建唯一的一個(gè)。
代碼接近于生活,很有意思。比如一個(gè)網(wǎng)站的登錄,點(diǎn)擊登錄后彈出一個(gè)登錄彈框,即使再次點(diǎn)擊,也不會(huì)再出現(xiàn)一個(gè)相同的彈框。又或者一個(gè)音樂播放程序,如果用戶打開了一個(gè)音樂,又想打開一個(gè)音樂,那么之前的播放界面就會(huì)自動(dòng)關(guān)閉,切換到當(dāng)前的播放界面。這些都是單例模式的應(yīng)用場景。
要實(shí)現(xiàn)一個(gè)單例模式,一個(gè)經(jīng)典的方式是創(chuàng)建一個(gè)類,類中又一個(gè)方法能創(chuàng)建該類的實(shí)例對象,還有一個(gè)標(biāo)記,記錄是否已經(jīng)創(chuàng)了過了實(shí)例對象。如果對象已經(jīng)存在,就返回第一次實(shí)例化對象的引用。

單例模式的實(shí)現(xiàn) es5實(shí)現(xiàn)方式
var Singleton = function(name) {
    this.name = name;
    //一個(gè)標(biāo)記,用來判斷是否已將創(chuàng)建了該類的實(shí)例
    this.instance = null;
}
// 提供了一個(gè)靜態(tài)方法,用戶可以直接在類上調(diào)用
Singleton.getInstance = function(name) {
    // 沒有實(shí)例化的時(shí)候創(chuàng)建一個(gè)該類的實(shí)例
    if(!this.instance) {
        this.instance = new Singleton(name);
    }
    // 已經(jīng)實(shí)例化了,返回第一次實(shí)例化對象的引用
    return this.instance;
}

用戶可以通過一個(gè)廣為人知的接口,對該實(shí)例進(jìn)行訪問。
我們嘗試對該對象進(jìn)行兩次實(shí)例化,觀察兩次實(shí)例化結(jié)果是否指向同一個(gè)對象。

var a = Singleton.getInstance("sven1");
var b = Singleton.getInstance("sven2");
// 指向的是唯一實(shí)例化的對象
console.log(a === b);

返回結(jié)果是:true。說明a、b之間是引用關(guān)系。

es6實(shí)現(xiàn)方式

創(chuàng)建Singleton類。class關(guān)鍵字和靜態(tài)函數(shù)都是es6新增的。

class Singleton {
    constructor(name) {
        this.name = name;
        this.instance = null;
    }
    // 構(gòu)造一個(gè)廣為人知的接口,供用戶對該類進(jìn)行實(shí)例化
    static getInstance(name) {
        if(!this.instance) {
            this.instance = new Singleton(name);
        }
        return this.instance;
    }
}
單例模式應(yīng)用實(shí)例

我們用一個(gè)生活中常見的一個(gè)場景來說明單例模式的應(yīng)用。
任意一個(gè)網(wǎng)站,點(diǎn)擊登錄按鈕,只會(huì)彈出有且僅有一個(gè)登錄框,即使后面再點(diǎn)擊登錄按鈕,也不會(huì)再彈出多一個(gè)彈框。這就是單例模式的典型應(yīng)用。接下來我們實(shí)現(xiàn)它。為了注重單例模式的展示,我們把登錄框簡化吧

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

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

相關(guān)文章

  • ES6重新認(rèn)識JavaScript設(shè)計(jì)模式(一): 單例模式

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

    G9YH 評論0 收藏0
  • JavaScript面向?qū)ο蟮某绦蛟O(shè)計(jì)

    摘要:目錄導(dǎo)語理解對象和面向?qū)ο蟮某绦蛟O(shè)計(jì)創(chuàng)建對象的方式的繼承機(jī)制原型對象原型鏈與原型對象相關(guān)的方法小結(jié)導(dǎo)語前面的系列文章,基本把的核心知識點(diǎn)的基本語法標(biāo)準(zhǔn)庫等章節(jié)講解完本章開始進(jìn)入核心知識點(diǎn)的高級部分面向?qū)ο蟮某绦蛟O(shè)計(jì),這一部分的內(nèi)容將會(huì)對對象 目錄 導(dǎo)語 1.理解對象和面向?qū)ο蟮某绦蛟O(shè)計(jì) 2.創(chuàng)建對象的方式 3.JavaScript的繼承機(jī)制 3.1 原型對象 3.2 原型鏈 3.3 與...

    gitmilk 評論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來做一個(gè)萬能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對容器接口對象進(jìn)行操作,第二類是返回一個(gè)容器接口對象,上節(jié)我們介紹了...

    Dionysus_go 評論0 收藏0
  • php設(shè)計(jì)模式

    摘要:我們今天也來做一個(gè)萬能遙控器設(shè)計(jì)模式適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。今天要介紹的仍然是創(chuàng)建型設(shè)計(jì)模式的一種建造者模式。設(shè)計(jì)模式的理論知識固然重要,但 計(jì)算機(jī)程序的思維邏輯 (54) - 剖析 Collections - 設(shè)計(jì)模式 上節(jié)我們提到,類 Collections 中大概有兩類功能,第一類是對容器接口對象進(jìn)行操作,第二類是返回一個(gè)容器接口對象,上節(jié)我們介紹了...

    vspiders 評論0 收藏0

發(fā)表評論

0條評論

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