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

javascript設(shè)計(jì)模式 – 命令模式原理與用法實(shí)例分析

 更新時(shí)間:2020年04月20日 08:33:09   作者:李小強(qiáng)  
這篇文章主要介紹了javascript設(shè)計(jì)模式 – 命令模式,結(jié)合實(shí)例形式分析了javascript命令模式相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了javascript設(shè)計(jì)模式 – 命令模式原理與用法。分享給大家供大家參考,具體如下:

介紹:命令模式是一種數(shù)據(jù)驅(qū)動(dòng)的設(shè)計(jì)模式,將請(qǐng)求以命令的形式包裹在對(duì)象中,并傳遞給調(diào)用對(duì)象。命令模式的核心在于引入了命令類,通過命令類來降低發(fā)送者和接受者的耦合度。

定義:將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化;對(duì)請(qǐng)求排隊(duì)或者記錄請(qǐng)求日志,以及支持可撤銷的操作。命令模式是一種對(duì)象行為型模式,其別名為動(dòng)作(Action)模式或事務(wù)(Transaction)模式。

場(chǎng)景:我們通過買賣股票的場(chǎng)景來實(shí)現(xiàn)下命令模式,

示例:

var Stock = function(){
  this.name = 'baidu';
  this.quantity = 100;
  this.buy = function(){
    console.log('購(gòu)買了:' + this.quantity + '股' + this.name);
  }
  this.sell = function(){
    console.log('賣出了:' + this.quantity + '股' + this.name);
  }
}
 
var BuyStock = function(stock){
  this.stock = stock;
 
  this.execute = function(){
    this.stock.buy();
  }
}
 
var SellStock = function(stock){
  this.stock = stock;
 
  this.execute = function(){
    this.stock.sell();
  }
}
 
var Broker = function(){
  this.orderList = [];
 
  this.takeOrder = function(order){
    this.orderList.push(order);
  }
  this.placeOrders = function(){
    this.orderList.map(function(item){
      item.execute();
    })
    this.orderList = [];
  }
}
 
var stock = new Stock();
var buyStock = new BuyStock(stock);
var sellStock = new SellStock(stock);
 
var broker = new Broker();
broker.takeOrder(buyStock);
broker.takeOrder(sellStock);
broker.placeOrders();
// 購(gòu)買了:100股baidu
// 賣出了:100股baidu

這個(gè)例子里面SellStock,BuyStock為命令類,執(zhí)行實(shí)際的命令。Broker用來接收命令,并在指定的時(shí)機(jī)執(zhí)行命令。Stock為請(qǐng)求受體,

回頭看下定義:sellStock,buyStock就是將命令封裝好的對(duì)象,你可以通過對(duì)象的execute方法執(zhí)行該命令。通過擴(kuò)展placeOrders方法可以支持請(qǐng)求隊(duì)列或者記錄請(qǐng)求日志,以及支持可撤銷等操作

命令模式總結(jié):

優(yōu)點(diǎn):
* 降低系統(tǒng)耦合度
* 新的命令很容易的加入到系統(tǒng)中

缺點(diǎn):
* 使用命令模式可能會(huì)導(dǎo)致某些系統(tǒng)有過多的具體命令類

適用場(chǎng)景:
* 系統(tǒng)需要將請(qǐng)求調(diào)用者和請(qǐng)求接受者解耦

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • JavaScript的模塊化:封裝(閉包),繼承(原型) 介紹

    JavaScript的模塊化:封裝(閉包),繼承(原型) 介紹

    在復(fù)雜的邏輯下, JavaScript 需要被模塊化,模塊需要封裝起來,只留下供外界調(diào)用的接口。閉包是 JavaScript 中實(shí)現(xiàn)模塊封裝的關(guān)鍵,也是很多初學(xué)者難以理解的要點(diǎn)
    2013-07-07
  • 一文教你用JavaScript制作個(gè)簡(jiǎn)單的大轉(zhuǎn)盤游戲

    一文教你用JavaScript制作個(gè)簡(jiǎn)單的大轉(zhuǎn)盤游戲

    日常生活中,我們經(jīng)常會(huì)見到形形色色的抽獎(jiǎng)活動(dòng),例如九宮格、大轉(zhuǎn)盤等等……本文就來教大家如何利用JavaScript制作個(gè)簡(jiǎn)單的大轉(zhuǎn)盤游戲,感興趣的可以了解一下
    2023-02-02
  • 基于javascript實(shí)現(xiàn)tab切換特效

    基于javascript實(shí)現(xiàn)tab切換特效

    這篇文章主要介紹了基于javascript實(shí)現(xiàn)tab切換特效的相關(guān)資料,具有一定的參考價(jià)值,需要的朋友可以參考下
    2016-03-03
  • JavaScript實(shí)現(xiàn)給浮點(diǎn)數(shù)添加千分位逗號(hào)的多種方法

    JavaScript實(shí)現(xiàn)給浮點(diǎn)數(shù)添加千分位逗號(hào)的多種方法

    JavaScript 是一門強(qiáng)大的前端語(yǔ)言,在處理數(shù)值格式化時(shí)提供了多種方法,在開發(fā)過程中,我們經(jīng)常需要將大數(shù)字格式化,使其更具可讀性,例如,將 12000000.11 轉(zhuǎn)換為 12,000,000.11,本文將詳細(xì)介紹 JavaScript 中如何實(shí)現(xiàn)這種格式化,需要的朋友可以參考下
    2025-04-04
  • 基于JavaScript+HTML編寫一個(gè)日期選擇插件

    基于JavaScript+HTML編寫一個(gè)日期選擇插件

    在現(xiàn)代Web應(yīng)用程序中,日期選擇器是一個(gè)非常常見的組件,用戶可以使用它來選擇特定的日期,在本篇文章中,我們將使用JavaScript和HTML來創(chuàng)建一個(gè)簡(jiǎn)單但功能強(qiáng)大的日期選擇插件,這個(gè)日期選擇插件是比較考驗(yàn)Js基本功的,需要的朋友可以參考下
    2023-10-10
  • 用原生JS對(duì)AJAX做簡(jiǎn)單封裝的實(shí)例代碼

    用原生JS對(duì)AJAX做簡(jiǎn)單封裝的實(shí)例代碼

    下面小編就為大家?guī)硪黄迷鶭S對(duì)AJAX做簡(jiǎn)單封裝的實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • javascript實(shí)時(shí)顯示當(dāng)天日期的方法

    javascript實(shí)時(shí)顯示當(dāng)天日期的方法

    這篇文章主要介紹了javascript實(shí)時(shí)顯示當(dāng)天日期的方法,可實(shí)時(shí)顯示當(dāng)前日期及星期的功能,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-05-05
  • Web版彷 Visual Studio 2003 顏色選擇器

    Web版彷 Visual Studio 2003 顏色選擇器

    Web版彷 Visual Studio 2003 顏色選擇器...
    2007-01-01
  • 在Webpack中配置別名路徑的全過程

    在Webpack中配置別名路徑的全過程

    在大型前端項(xiàng)目中,模塊路徑往往很長(zhǎng)且復(fù)雜,使用相對(duì)路徑不僅降低了代碼可讀性,還增加了維護(hù)成本,Webpack提供了配置別名路徑的功能,可以通過為常用目錄定義簡(jiǎn)短的別名,簡(jiǎn)化模塊導(dǎo)入路徑,本文將詳細(xì)介紹如何在Webpack中配置別名路徑,需要的朋友可以參考下
    2025-03-03
  • js實(shí)現(xiàn)點(diǎn)擊煙花特效

    js實(shí)現(xiàn)點(diǎn)擊煙花特效

    這篇文章主要介紹了js實(shí)現(xiàn)點(diǎn)擊煙花特效,幫助大家更好的利用js美化網(wǎng)頁(yè),感興趣的朋友可以了解下
    2020-10-10

最新評(píng)論

绥德县| 棋牌| 凯里市| 雷山县| 阿拉善盟| 习水县| 黄骅市| 抚州市| 普宁市| 新乡县| 黄冈市| 哈尔滨市| 灵台县| 察隅县| 黄冈市| 弋阳县| 礼泉县| 九寨沟县| 莱州市| 荆门市| 黑山县| 桃园县| 锦屏县| 读书| 那曲县| 万荣县| 信丰县| 东莞市| 平泉县| 英吉沙县| 玉环县| 邹平县| 六盘水市| 麻城市| 蕉岭县| 秦安县| 新津县| 廉江市| 娄烦县| 武邑县| 文登市|