最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript設計模式之命令模式

 更新時間:2022年06月23日 11:32:27   作者:??前端若水????  
這篇文章主要介紹了JavaScript設計模式之命令模式,命令設計模式是由發(fā)令者、執(zhí)行者、命令對象三部分構成,文章由此展開詳細的內(nèi)容介紹,需要的小伙伴可以參考一下

前言

命令設計模式是由三部分構成:

  • 發(fā)令者:用于發(fā)出命令和調(diào)用命令,不知道如何執(zhí)行且誰去執(zhí)行
  • 執(zhí)行者:用于提供對應接口發(fā)出的命令的處理請求,不知道誰發(fā)出的命令
  • 命令對象:用于接收命令且處理執(zhí)行者的請求

把執(zhí)行操作和稍后執(zhí)行事件信息存在命令對象中,通過發(fā)令者發(fā)布命令來讓執(zhí)行者進行執(zhí)行,從而達到了執(zhí)行者和發(fā)令者分離開來,使代碼耦合度降低

生活中的命令設計模式

在生活中,我們?nèi)ワ堭^吃飯,我們先告訴服務員我們想要吃那些菜以及對菜品的要求,然后服務員通過點餐平臺告知后面的廚房,廚房得知我們想要吃的菜以及對菜品的要求,廚師對菜品進行制作,做好后通知服務員,服務員把菜品給我們端上來,我們進行享用

生活中例子上,發(fā)令者就是我們,執(zhí)行者是服務員,廚師制作菜品則是命令對象

工作中的命令設計模式

在工作中我們通常用于某些時候需要向某些對象發(fā)起請求,但并不知道接收者是誰,也不知道請求的操作是什么,此時可以使用命令設計模式

我們來做一個需求,該需求是能夠一鍵封鎖賬戶權限和一鍵解封賬戶權限

頁面結構,寫上倆個權限按鈕進行控制權限開啟與關閉

   <button id="onbtn">開啟權限</button>
    <button id="offbtn">關閉權限</button>

我們在通過js進行過去到倆個權限控制按鈕

   const onBtn=document.getElementById('onbtn');
  const offBtn=document.getElementById('offbtn');

發(fā)令者

class Control {
    submit(command) {
        command.execute();
    }
}

執(zhí)行者

class Power {
    powerOn() {
        console.log("開啟所有權限入口");
    }

    powerOff() {
        console.log("關閉所有權限入口");
    }
}

命令對象:

class PowerOnCommand {
    constructor(current) {
        this.current = current;
    }
    execute() {
        this.current.powerOn();
    }
    undo() {
        this.current.powerOff();
    }
    redo() {
        this.execute();
    }
}
class PowerOffCommand {
    constructor(current) {
        this.current = current;
    }
    execute() {
        this.current.powerOff();
    }
    undo() {
        this.current.powerOn();
    }
    redo() {
        this.execute();
    }
}

我們把各個類都創(chuàng)建好實例,然后再通過js給按鈕綁定上事件,通過事件操作命令者實例進行發(fā)布命令

//執(zhí)行者實例
const power = new Power();
//命令對象實例
const powerOn = new PowerOnCommand(power);
const powerOff = new PowerOffCommand(power);
//發(fā)布者實例
const control = new Control();
//開啟權限按鈕綁定事件
onBtn.onclick=function(){
// 開啟所有權限入口
    control.submit(powerOn); 
    alert('權限已開啟')
}
//關閉權限按鈕綁定事件
offBtn.onclick=function(){
// 關閉所有權限入口
    control.submit(powerOff); 
    alert('權限已關閉')
}

命令者設計模式由于允許我們將操作封裝在對象中進行管理,所以也可以用來實現(xiàn)事務系統(tǒng),將執(zhí)行的命令保存在歷史記錄中,如果成功則執(zhí)行最后的命令,否則根據(jù)歷史記錄進行回滾,對執(zhí)行的操作進行撤銷

到此這篇關于JavaScript設計模式之命令模式的文章就介紹到這了,更多相關JavaScript 命令模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 淺析JS中NEW的實現(xiàn)原理及重寫

    淺析JS中NEW的實現(xiàn)原理及重寫

    本文通過實例代碼給大家介紹了JS中NEW的實現(xiàn)原理及重寫,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-02-02
  • js實現(xiàn)在字符串中提取數(shù)字

    js實現(xiàn)在字符串中提取數(shù)字

    js實現(xiàn)在字符串中提取數(shù)字。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • redux-saga 初識和使用

    redux-saga 初識和使用

    這篇文章主要介紹了redux-saga 初識和使,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • js中關于一個分號的崩潰示例

    js中關于一個分號的崩潰示例

    下面的js代碼不管if條件的結果是true還是false都會執(zhí)行大括號的代碼,結果發(fā)現(xiàn)if條件括號后面多寫了分號,崩潰啊
    2013-11-11
  • JavaScript實現(xiàn)二分查找實例代碼

    JavaScript實現(xiàn)二分查找實例代碼

    二分查找的前提為:數(shù)組、有序。這篇文章主要介紹了JavaScript實現(xiàn)二分查找實例代碼,需要的朋友可以參考下
    2017-02-02
  • 淺析如何利用JavaScript進行語音識別

    淺析如何利用JavaScript進行語音識別

    所謂語音識別就是將你所說的轉(zhuǎn)化成文字。Chrome 瀏覽器在版本25之后開始對這一特性的支持。這篇文章將會詳細的介紹如何使用JavaScript進行語音識別,感興趣的朋友們可以參考借鑒,下面來一起看看吧。
    2016-10-10
  • javascript中使用正則計算中文長度的例子

    javascript中使用正則計算中文長度的例子

    這篇文章主要介紹了javascript中使用正則計算中文長度的例子,需要的朋友可以參考下
    2014-04-04
  • JS 創(chuàng)建對象的模式實例小結

    JS 創(chuàng)建對象的模式實例小結

    這篇文章主要介紹了JS 創(chuàng)建對象的模式,結合實例形式總結分析了JS 創(chuàng)建對象的各種常用模式,包括工廠模式、構造函數(shù)模式、原型模式、組合構造和原型模式、動態(tài)原型模式、寄生構造函數(shù)模式、穩(wěn)妥構造模式等,需要的朋友可以參考下
    2020-04-04
  • 以JSON形式將JS中Array對象數(shù)組傳至后臺的方法

    以JSON形式將JS中Array對象數(shù)組傳至后臺的方法

    業(yè)務是需要將前臺jQuery easyUI DataGrid列表中所選的若干行的數(shù)據(jù)傳到后臺進行update操作,具體的實現(xiàn)如下,感興趣的朋友可以參考下
    2014-01-01
  • 微信小程序新手入門之自定義組件的使用

    微信小程序新手入門之自定義組件的使用

    最近在用自定義組件搭建小程序,簡單記錄下步驟,所以這篇文章主要給大家介紹了關于微信小程序新手入門之自定義組件使用的相關資料,需要的朋友可以參考下
    2021-05-05

最新評論

建昌县| 周宁县| 四平市| 乐清市| 湖口县| 门头沟区| 新安县| 乐至县| 纳雍县| 乐陵市| 崇州市| 布尔津县| 叙永县| 景东| 多伦县| 林芝县| 竹北市| 林芝县| 扎赉特旗| 常山县| 建水县| 恩平市| 巴南区| 马鞍山市| 邢台市| 崇阳县| 黄平县| 汪清县| 京山县| 莎车县| 铁岭市| 舞钢市| 佳木斯市| 江源县| 平泉县| 静海县| 永清县| 绥德县| 平塘县| 绥阳县| 古丈县|