国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JavaScript設計模式(三)——單例模式、裝飾器模式、適配器模式

這篇具有很好參考價值的文章主要介紹了JavaScript設計模式(三)——單例模式、裝飾器模式、適配器模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

個人簡介

??個人主頁: 前端雜貨鋪
???♂?學習方向: 主攻前端方向,正逐漸往全干發(fā)展
??個人狀態(tài): 研發(fā)工程師,現(xiàn)效力于中國工業(yè)軟件事業(yè)
??人生格言: 積跬步至千里,積小流成江海
??推薦學習:??前端面試寶典 ??Vue2 ??Vue3 ??Vue2/3項目實戰(zhàn) ??Node.js??Three.js ??JS版算法
??個人推廣:每篇文章最下方都有加入方式,旨在交流學習&資源分享,快加入進來吧


??前言

大家好,這里是前端雜貨鋪。

上一節(jié),我們學習了簡單工廠模式、抽象工廠模式和建造者模式,它們都隸屬于設計模式中的 創(chuàng)建型模式。這一節(jié),我們學習單例模式、裝飾器模式和適配器模式…

一、單例模式

單例模式是一種創(chuàng)建型設計模式。它保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。主要解決一個全局使用的類頻繁地創(chuàng)建和銷毀,占用內存。

如下例子,在不刷新網(wǎng)頁的情況下,我們再次修改已經(jīng)創(chuàng)建的實例,實例不會發(fā)生更改,因為單例模式只在第一次創(chuàng)建的時候有效。

應用場景:創(chuàng)建一個對象要消耗的資源多(如寫日志)、只允許一個線程訪問(如計數(shù)器,確保線程安全)。

class Singleton {
    constructor(name, age) {
        if (!Singleton.instance) {
            this.name = name;
            this.age = age;
            Singleton.instance = this;
        }
        return Singleton.instance;
    }
}

let zahuopu;
zahuopu = new Singleton('前端雜貨鋪', 22);
zahuopu = new Singleton('CSDN', 2023);
console.log('zahuopu', zahuopu);

JavaScript設計模式(三)——單例模式、裝飾器模式、適配器模式,設計模式,javascript,設計模式,單例模式,裝飾器模式,適配器模式


二、裝飾器模式

裝飾器模式能夠很好的 對已有功能進行拓展,它不會更改原有的代碼,極大地減小了對其他業(yè)務的影響,這樣就可以方便我們在較少改動下對軟件功能進行拓展。

舉個栗子:原本的程序有 test() 主業(yè)務,現(xiàn)在我們想在不更改原有代碼的情況下在 主業(yè)務之前主業(yè)務之后 添加一些新的業(yè)務,那么這個時候就可以使用我們的裝飾器模式。

應用場景:API 參數(shù)驗證、日志記錄等。

Function.prototype.before = function (beforeFn) {
    let _this = this;
    return () => {
        // 前置函數(shù)調用
        beforeFn.apply(this, arguments);
        // 執(zhí)行原來的函數(shù)
        return _this.apply(this, arguments);
    }
}

Function.prototype.after = function (afterFn) {
    let _this = this;
    return () => { 
        let result = _this.apply(this, arguments);
        // 后置函數(shù)調用
        afterFn.apply(this, arguments);
        // 執(zhí)行原來的函數(shù)
        return result;
    }
}

function test() {
    console.log('主業(yè)務');
}

let test1 = test.before(() => {
    console.log('前置業(yè)務');
}).after(() => { 
    console.log('后置業(yè)務');
});

test1();

JavaScript設計模式(三)——單例模式、裝飾器模式、適配器模式,設計模式,javascript,設計模式,單例模式,裝飾器模式,適配器模式


三、適配器模式

適配器模式 將一個類的接口轉換成客戶希望的另一個接口。它讓那些接口不兼容的類可以一起工作。

舉個栗子:我們家庭用電基本都是 220V 的,但直接給電器這么大伏特的電顯然是不行的(直接燒了),這個時候就需要一個轉接頭對伏特進行處理,使得電器能夠正常使用。

再舉個栗子:對于 百度地圖 和 騰訊地圖 是由兩個團隊各自研發(fā)的,它們里面的 接口顯然是不一樣的。我們 在美團上找店鋪位置的時候會讓我們選擇打開百度地圖還是騰訊地圖。這個時候美團就可以 默認調用百度地圖的接口,再使用適配器模式讓不兼容的騰訊地圖變的兼容起來。

// 騰訊地圖
class TencentMap {
    show() {
        console.log("開始渲染騰訊地圖");
    }
}

// 百度地圖
class BaiduMap {
    display() {
        console.log("開始渲染百度地圖");
    }
}

// 由于 renderMap 默認調用的是 display(), 而 TencentMap 調用的是 show()
// 所以我們需要做一個適配器 TencentAdapter 繼承自 TencentMap, 通過 display() 去調用 show()
class TencentAdpater extends TencentMap {
    constructor() {
        super();
    }

    display() {
        this.show();
    }
}

// 渲染地圖(由于百度地圖和騰訊地圖是兩個團隊,內置方法不統(tǒng)一,我們先默認渲染百度地圖)
function renderMap(map) {
    map.display()
}

renderMap(new TencentAdpater());
renderMap(new BaiduMap())

JavaScript設計模式(三)——單例模式、裝飾器模式、適配器模式,設計模式,javascript,設計模式,單例模式,裝飾器模式,適配器模式


????本篇小結

本文我們了解了單例模式、裝飾器模式和適配器模式。

單例模式 是一種 創(chuàng)建型設計模式,它確保一個類只有一個實例,并提供一個全局訪問點來訪問該實例。

裝飾器模式 是一種 結構型設計模式,它允許向一個現(xiàn)有的對象添加新的功能,同時又不改變其結構。

適配器模式 是一種 結構型設計模式。它是兩個不兼容接口之間的橋梁,把兩個獨立接口的功能進行了良好的結合。

好啦,本篇文章到這里就要和大家說再見啦,祝你這篇文章閱讀愉快,你下篇文章的閱讀愉快留著我下篇文章再祝!


參考資料:

  1. 百度百科 · 軟件設計模式(設計模式)
  2. 菜鳥教程 · 設計模式
  3. JavaScript設計模式 【作者:千鋒教育】

JavaScript設計模式(三)——單例模式、裝飾器模式、適配器模式,設計模式,javascript,設計模式,單例模式,裝飾器模式,適配器模式文章來源地址http://www.zghlxwxcb.cn/news/detail-695718.html


到了這里,關于JavaScript設計模式(三)——單例模式、裝飾器模式、適配器模式的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • js 中單例模式、工廠模式、裝飾模式、發(fā)布訂閱模式、適配器模式、

    簡單概述:將每個功能拆分到最小化,最后將小功能拼接到一起

    2024年02月11日
    瀏覽(61)
  • 設計模式——適配器模式

    設計模式——適配器模式

    說起適配器其實在我們的生活中是非常常見的,比如:學校的宿舍的電壓都比較低,而有的學生想使用大功率電器,宿舍的就會跳閘,然而如果你使用一個適配器(變壓器)就可以使用了(溫馨提示宿舍使用大功率電器不太安全,容易引起火災,希望大家謹慎使用)。 又比如

    2024年02月12日
    瀏覽(35)
  • 設計模式-適配器模式

    設計模式-適配器模式

    在我們生活中,插座輸出的電源都是220V的,而我們手機充電需要的電壓基本都是5V的。我們不能直接用220V的電壓來給手機充電,也不能說專門有線路來提供5V的電壓。所以就有了充電器,充電器可以將220V的電壓轉為5V的電壓,這樣我們就方便太多了。 上面所說的充電器其實就

    2024年02月08日
    瀏覽(34)
  • 【設計模式】適配器模式

    【設計模式】適配器模式

    適配器模式(Adapter Pattern)是作為兩個不兼容的接口之間的橋梁。這種類型的設計模式屬于結構型模式,它結合了兩個獨立接口的功能。 這種模式涉及到一個單一的類,該類負責加入獨立的或不兼容的接口功能。舉個真實的例子,讀卡器是作為內存卡和筆記本之間的適配器。

    2024年02月12日
    瀏覽(32)
  • 設計模式--適配器模式

    設計模式--適配器模式

    目錄 基本介紹 工作原理 類適配模式 介紹 應用實例介紹 類適配器模式注意事項和細節(jié) 對象適配模式 介紹 對象適配器模式注意事項和細節(jié) 接口適配器模式 介紹 適配器模式的注意事項和細節(jié) ?(1) 適配器模式(Adapter Pattern) 將某個類的接口轉換成客戶端期望的另一個接口表示

    2023年04月26日
    瀏覽(19)
  • 【設計模式】使用適配器模式做補償設計

    【設計模式】使用適配器模式做補償設計

    適配器模式是一種 結構型設計模式 ,它提供了一個中間層,通過這個中間層,客戶端可以使用統(tǒng)一的接口與具有不同接口的類進行交互,也就是說,將一個接口轉換成客戶期望的另一個接口,使得原本不兼容的接口能夠協(xié)同工作。 舉個現(xiàn)實中的例子,我們現(xiàn)在的很多輕薄筆

    2024年02月22日
    瀏覽(24)
  • 設計模式 06 適配器模式

    適配器模式(Adapter Pattern)屬于 結構型 模式 結構型 模式關注如何將現(xiàn)有的類或對象組織在一起形成更加強大的結構。 在生活中,我們經(jīng)常遇到這樣的一個問題:輕薄筆記本通常只有 type-c 或者 usb-a 接口,沒有網(wǎng)口。但日常使用中是往往需要連接網(wǎng)口上網(wǎng)的,這時想到的第

    2024年02月11日
    瀏覽(19)
  • 設計模式-- 3.適配器模式

    設計模式-- 3.適配器模式

    將一個類的接口轉換成客戶希望的另外一個接口。使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。 請求者(client):客戶端角色,需要使用適配器的對象,不需要關心適配器內部的實現(xiàn),只對接目標角色。 目標角色(Target):目標角色,和client直接對接,定義

    2024年01月18日
    瀏覽(26)
  • 《設計模式》之適配器模式

    《設計模式》之適配器模式

    把一個類的接口轉換成客戶端所期待的另一種接口,從而使原接口不匹配而無法再一起工作的兩個類能在一起工作。 在軟件系統(tǒng)中,由于應用環(huán)境的變化,常常需要將“一些現(xiàn)存的對象”放在新的環(huán)境中應用,但是新環(huán)境要求的接口是這些現(xiàn)存對象所不能滿足的。 如何應對

    2024年02月09日
    瀏覽(22)
  • 設計模式四:適配器模式

    設計模式四:適配器模式

    1、適配器模式的理解 適配器模式可以理解為有兩個現(xiàn)成的類Adaptee和Target,它們兩個是不能動的,要求必須使用B這個類來實現(xiàn)一個功能,但是A的內容是能復用的,這個時候我們需要編寫一個轉換器 適配器模式 Adaptee:被適配者,現(xiàn)有的接口或者類; Adapter:適配器類,適配器

    2024年02月22日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包