成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

paney129 / 340人閱讀

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

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

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

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

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

0. 示例代碼

此節(jié)全部代碼

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

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

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

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

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

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

2. 應(yīng)用場景

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

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

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

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

__author__ = "godbmw.com"

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

# 命令對象
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è)置命令對戲那個
  def set_command(self, command):
    self.command = command

  # 按下按鈕,交給命令對象調(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方法為按鈕指定了命令對象,命令對象為調(diào)用者(按鈕)找到了接收者(MenuBar),并且執(zhí)行了相關(guān)操作。而按鈕本身并不需要關(guān)心接收者和接受操作。

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

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

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

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

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



  
    
    
    
    命令模式
  
  
    
    
  
4. 參考

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

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

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

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

相關(guān)文章

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

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

    lixiang 評論0 收藏0
  • 個人整理, 閱讀過的好文章 (每天隨時更新)

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

    Chiclaim 評論0 收藏0
  • 每天一個設(shè)計模式單例模式

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

    yy736044583 評論0 收藏0
  • 每天一個設(shè)計模式單例模式

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

    lijy91 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<