国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

每天一個(gè)設(shè)計(jì)模式之命令模式

lixiang / 2915人閱讀

摘要:作者按每天一個(gè)設(shè)計(jì)模式旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用和兩種語(yǔ)言實(shí)現(xiàn)。該對(duì)象執(zhí)行命令。命令模式按鈕參考設(shè)計(jì)模式和開(kāi)發(fā)實(shí)踐如何實(shí)現(xiàn)命令模式

作者按:《每天一個(gè)設(shè)計(jì)模式》旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用javascriptpython兩種語(yǔ)言實(shí)現(xiàn)。誠(chéng)然,每種設(shè)計(jì)模式都有多種實(shí)現(xiàn)方式,但此小冊(cè)只記錄最直截了當(dāng)?shù)膶?shí)現(xiàn)方式 :)

原文地址是:《每天一個(gè)設(shè)計(jì)模式之命令模式》

歡迎關(guān)注個(gè)人技術(shù)博客:godbmw.com。每周 1 篇原創(chuàng)技術(shù)分享!開(kāi)源教程(webpack、設(shè)計(jì)模式)、面試刷題(偏前端)、知識(shí)整理(每周零碎),歡迎長(zhǎng)期關(guān)注!

如果您也想進(jìn)行知識(shí)整理 + 搭建功能完善/設(shè)計(jì)簡(jiǎn)約/快速啟動(dòng)的個(gè)人博客,請(qǐng)直接戳theme-bmw

0. 示例代碼

此節(jié)全部代碼

《每天一個(gè)設(shè)計(jì)模式》地址

1. 什么是“命令模式”?
命令模式是一種數(shù)據(jù)驅(qū)動(dòng)的設(shè)計(jì)模式,它屬于行為型模式。

請(qǐng)求以命令的形式包裹在對(duì)象中,并傳給調(diào)用對(duì)象。

調(diào)用對(duì)象尋找可以處理該命令的合適的對(duì)象,并把該命令傳給相應(yīng)的對(duì)象。

該對(duì)象執(zhí)行命令。

在這三步驟中,分別有 3 個(gè)不同的主體:發(fā)送者、傳遞者和執(zhí)行者。在實(shí)現(xiàn)過(guò)程中,需要特別關(guān)注。

2. 應(yīng)用場(chǎng)景

有時(shí)候需要向某些對(duì)象發(fā)送請(qǐng)求,但是又不知道請(qǐng)求的接受者是誰(shuí),更不知道被請(qǐng)求的操作是什么。此時(shí),命令模式就是以一種松耦合的方式來(lái)設(shè)計(jì)程序

3. 代碼實(shí)現(xiàn) 3.1 python3 實(shí)現(xiàn)

命令對(duì)象將動(dòng)作的接收者設(shè)置在屬性中,并且對(duì)外暴露了execute接口(按照習(xí)慣約定)。

在其他類設(shè)置命令并且執(zhí)行命令的時(shí)候,只需要按照約定調(diào)用Command對(duì)象的execute()即可。到底是誰(shuí)接受命令,并且怎么執(zhí)行命令,都交給Command對(duì)象來(lái)處理!

__author__ = "godbmw.com"

# 接受到命令,執(zhí)行具體操作
class Receiver(object):
  def action(self):
    print("按鈕按下,執(zhí)行操作")

# 命令對(duì)象
class Command:
  def __init__(self, receiver):
    self.receiver = receiver

  def execute(self):
    self.receiver.action()

# 具體業(yè)務(wù)類
class Button:
  def __init__(self):
    self.command = None

  # 設(shè)置命令對(duì)戲那個(gè)
  def set_command(self, command):
    self.command = command

  # 按下按鈕,交給命令對(duì)象調(diào)用相關(guān)函數(shù)
  def down(self):
    if not self.command:
      return
    self.command.execute()

if __name__ == "__main__":

  receiver = Receiver()

  command = Command(receiver)

  button = Button()
  button.set_command(command)
  button.down()
3.2 ES6 實(shí)現(xiàn)

setCommand方法為按鈕指定了命令對(duì)象,命令對(duì)象為調(diào)用者(按鈕)找到了接收者(MenuBar),并且執(zhí)行了相關(guān)操作。而按鈕本身并不需要關(guān)心接收者和接受操作

// 接受到命令,執(zhí)行相關(guān)操作
const MenuBar = {
  refresh() {
    console.log("刷新菜單頁(yè)面");
  }
};

// 命令對(duì)象,execute方法就是執(zhí)行相關(guān)命令
const RefreshMenuBarCommand = receiver => {
  return {
    execute() {
      receiver.refresh();
    }
  };
};

// 為按鈕對(duì)象指定對(duì)應(yīng)的 對(duì)象
const setCommand = (button, command) => {
  button.onclick = () => {
    command.execute();
  };
};

let refreshMenuBarCommand = RefreshMenuBarCommand(MenuBar);
let button = document.querySelector("button");
setCommand(button, refreshMenuBarCommand);

下面是同級(jí)目錄的 html 代碼,在谷歌瀏覽器中打開(kāi)創(chuàng)建的index.html,并且打開(kāi)控制臺(tái),即可看到效果。



  
    
    
    
    命令模式
  
  
    
    
  
4. 參考

《JavaScript 設(shè)計(jì)模式和開(kāi)發(fā)實(shí)踐》

如何實(shí)現(xiàn)命令模式

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/42792.html

相關(guān)文章

  • 每天一個(gè)設(shè)計(jì)模式命令模式

    摘要:作者按每天一個(gè)設(shè)計(jì)模式旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用和兩種語(yǔ)言實(shí)現(xiàn)。該對(duì)象執(zhí)行命令。命令模式按鈕參考設(shè)計(jì)模式和開(kāi)發(fā)實(shí)踐如何實(shí)現(xiàn)命令模式 作者按:《每天一個(gè)設(shè)計(jì)模式》旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用javascript和python兩種語(yǔ)言實(shí)現(xiàn)。誠(chéng)然,每種設(shè)計(jì)模式都有多種實(shí)現(xiàn)方式,但此小冊(cè)只記錄最直截了當(dāng)?shù)膶?shí)現(xiàn)方式 :) 原文地址是:《每天一個(gè)設(shè)計(jì)模式之命令模式》 歡迎關(guān)注個(gè)人...

    paney129 評(píng)論0 收藏0
  • 個(gè)人整理, 閱讀過(guò)的好文章 (每天隨時(shí)更新)

    摘要:大家有好的文章可以在評(píng)論下面分享出來(lái)共同進(jìn)步本文鏈接數(shù)組使用之道程序員進(jìn)階學(xué)習(xí)書(shū)籍參考指南教你在不使用框架的情況下也能寫(xiě)出現(xiàn)代化代碼巧用數(shù)組函數(shù)框架中間件實(shí)現(xiàn)沒(méi)錯(cuò),這就是面向?qū)ο缶幊淘O(shè)計(jì)模式需要遵循的個(gè)基本原則令人困惑的在中使用協(xié)程實(shí)現(xiàn)多任 大家有好的文章,可以在評(píng)論下面分享出來(lái), 共同進(jìn)步! 本文github鏈接 php PHP 數(shù)組使用之道 PHP程序員進(jìn)階學(xué)習(xí)書(shū)籍參考指南 教你...

    Chiclaim 評(píng)論0 收藏0
  • 每天一個(gè)設(shè)計(jì)模式單例模式

    摘要:博主按每天一個(gè)設(shè)計(jì)模式旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語(yǔ)言實(shí)現(xiàn)。單例模式用途如果一個(gè)類負(fù)責(zé)連接數(shù)據(jù)庫(kù)的線程池日志記錄邏輯等等,此時(shí)需要單例模式來(lái)保證對(duì)象不被重復(fù)創(chuàng)建,以達(dá)到降低開(kāi)銷的目的。 博主按:《每天一個(gè)設(shè)計(jì)模式》旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用javascript(_靠這吃飯_)和python(_純粹喜歡_)兩種語(yǔ)言實(shí)現(xiàn)。誠(chéng)然,每種設(shè)計(jì)模式都有多種實(shí)...

    yy736044583 評(píng)論0 收藏0
  • 每天一個(gè)設(shè)計(jì)模式單例模式

    摘要:博主按每天一個(gè)設(shè)計(jì)模式旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語(yǔ)言實(shí)現(xiàn)。單例模式用途如果一個(gè)類負(fù)責(zé)連接數(shù)據(jù)庫(kù)的線程池日志記錄邏輯等等,此時(shí)需要單例模式來(lái)保證對(duì)象不被重復(fù)創(chuàng)建,以達(dá)到降低開(kāi)銷的目的。 博主按:《每天一個(gè)設(shè)計(jì)模式》旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用javascript(_靠這吃飯_)和python(_純粹喜歡_)兩種語(yǔ)言實(shí)現(xiàn)。誠(chéng)然,每種設(shè)計(jì)模式都有多種實(shí)...

    lijy91 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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