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

說(shuō)說(shuō)設(shè)計(jì)模式~命令模式(command)

這篇具有很好參考價(jià)值的文章主要介紹了說(shuō)說(shuō)設(shè)計(jì)模式~命令模式(command)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

回到目錄

概述

命令模式(Command Pattern)是一種行為型設(shè)計(jì)模式,它將請(qǐng)求封裝成一個(gè)對(duì)象,從而允許我們根據(jù)不同的請(qǐng)求將客戶端參數(shù)化,并且能夠?qū)⒄?qǐng)求排隊(duì)或記錄請(qǐng)求日志、支持撤銷操作等。該模式使得請(qǐng)求的發(fā)送者和接收者解耦。

使用命令模式的主要目的是將方法調(diào)用封裝成對(duì)象,這樣可以在不同的上下文中使用不同的請(qǐng)求、隊(duì)列或日志來(lái)參數(shù)化其他對(duì)象。這使得請(qǐng)求的發(fā)送者和接收者之間的耦合度降低,并且能夠靈活地?cái)U(kuò)展和變化請(qǐng)求的處理。

包含的對(duì)象

命令模式的主要參與者包括:

  • Command(命令):聲明執(zhí)行操作的接口,通常包含執(zhí)行方法 execute()
  • ConcreteCommand(具體命令):實(shí)現(xiàn) Command 接口,將一個(gè)接收者對(duì)象綁定于一個(gè)動(dòng)作,并實(shí)現(xiàn)執(zhí)行方法。
  • Receiver(接收者):執(zhí)行命令的相關(guān)操作,是具體業(yè)務(wù)邏輯的實(shí)際執(zhí)行者。
  • Invoker(調(diào)用者):發(fā)出具體命令并要求命令執(zhí)行請(qǐng)求的對(duì)象。
  • Client(客戶端):創(chuàng)建具體命令對(duì)象并設(shè)置其接收者。

在代碼中的體現(xiàn)

以下是一個(gè)使用命令模式的簡(jiǎn)單示例,以控制電燈的開(kāi)關(guān)操作為例:

  1. 定義命令接口和具體命令類:
// Command(命令)
public interface Command {
    void execute();
}

// ConcreteCommand(具體命令)
public class LightOnCommand implements Command {
    private Light light;

    public LightOnCommand(Light light) {
        this.light = light;
    }

    @Override
    public void execute() {
        light.turnOn();
    }
}
  1. 定義接收者類:
// Receiver(接收者)
public class Light {
    public void turnOn() {
        System.out.println("Light turned on");
    }

    public void turnOff() {
        System.out.println("Light turned off");
    }
}
  1. 定義調(diào)用者類:
// Invoker(調(diào)用者)
public class RemoteControl {
    private Command command;

    public void setCommand(Command command) {
        this.command = command;
    }

    public void pressButton() {
        command.execute();
    }
}
  1. 客戶端代碼示例:
// Client(客戶端)
public class Main {
    public static void main(String[] args) {
        // 創(chuàng)建接收者對(duì)象
        Light light = new Light();

        // 創(chuàng)建具體命令對(duì)象并設(shè)置接收者
        Command lightOnCommand = new LightOnCommand(light);

        // 創(chuàng)建調(diào)用者對(duì)象并設(shè)置命令
        RemoteControl remoteControl = new RemoteControl();
        remoteControl.setCommand(lightOnCommand);

        // 執(zhí)行命令
        remoteControl.pressButton();
    }
}

在上述示例中,命令模式的主要參與者包括 Command 接口和 LightOnCommand 具體命令類。Light

類作為接收者執(zhí)行實(shí)際的命令操作。RemoteControl 類作為調(diào)用者負(fù)責(zé)接收命令并執(zhí)行。客戶端代碼創(chuàng)建接收者對(duì)象、具體命令對(duì)象和調(diào)用者對(duì)象,并將它們組合在一起進(jìn)行命令的執(zhí)行。

通過(guò)命令模式,我們可以將控制電燈開(kāi)關(guān)的操作封裝成一個(gè)命令對(duì)象,使得命令的發(fā)送者和接收者解耦,且能夠動(dòng)態(tài)地設(shè)置命令并執(zhí)行。這樣的設(shè)計(jì)可以方便地?cái)U(kuò)展和修改命令的處理邏輯,以及支持命令的撤銷和重做操作等。
回到目錄文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-504070.html

到了這里,關(guān)于說(shuō)說(shuō)設(shè)計(jì)模式~命令模式(command)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 23種設(shè)計(jì)模式之命令模式(Command Pattern)

    23種設(shè)計(jì)模式之命令模式(Command Pattern)

    前言:大家好,我是小威,24屆畢業(yè)生,在一家滿意的公司實(shí)習(xí)。本篇文章將23種設(shè)計(jì)模式中的命令模式,此篇文章為一天學(xué)習(xí)一個(gè)設(shè)計(jì)模式系列文章,后面會(huì)分享其他模式知識(shí)。 如果文章有什么需要改進(jìn)的地方還請(qǐng)大佬不吝賜教 ????。 小威在此先感謝各位大佬啦~~????

    2024年02月06日
    瀏覽(25)
  • C++設(shè)計(jì)模式_23_Command 命令模式

    我們將Command 和Visitor歸為“行為變化”模式。 Command 命令模式與函數(shù)對(duì)象十分類似,但在C++主流框架中,函數(shù)對(duì)象(function object)應(yīng)用的更為廣泛。 在組件的構(gòu)建過(guò)程中,組件行為的變化經(jīng)常導(dǎo)致組件本身劇烈的變化。“行為變化”模式將組件的行為和組件本身進(jìn)行解耦,從

    2024年02月06日
    瀏覽(16)
  • C#設(shè)計(jì)模式(15)命令模式(Command Pattern)

    命令模式(Command Pattern) 命令模式是一種數(shù)據(jù)驅(qū)動(dòng)的設(shè)計(jì)模式,屬于行為型模式類別。請(qǐng)求被包裝在一個(gè)對(duì)象中作為命令,并傳遞給調(diào)用對(duì)象。調(diào)用對(duì)象尋找可以處理該命令的合適對(duì)象,并將命令傳遞給相應(yīng)的對(duì)象,該對(duì)象執(zhí)行命令。 實(shí)現(xiàn) 步驟 1 :創(chuàng)建一個(gè)命令接口。 步驟

    2024年02月14日
    瀏覽(24)
  • 命令模式 Command Pattern 《游戲設(shè)計(jì)模式》學(xué)習(xí)筆記

    命令模式 Command Pattern 《游戲設(shè)計(jì)模式》學(xué)習(xí)筆記

    對(duì)于一般的按鍵輸入,我們通常這么做,直接if按了什么鍵,就執(zhí)行相應(yīng)的操作 在這里我們是將用戶的輸入和程序行為硬編碼在一起,這是我們很自然就想到的最快的做法。 但是如果這是一個(gè)大型游戲,往往我們需要實(shí)現(xiàn)一個(gè)按鍵配置的功能(話說(shuō)2077直到上線都沒(méi)有實(shí)現(xiàn)這

    2024年02月14日
    瀏覽(27)
  • 設(shè)計(jì)模式——命令模式(Command Pattern)+ Spring相關(guān)源碼

    類型: 行為型模式 目的: 將一個(gè)請(qǐng)求封裝成一個(gè)對(duì)象,從而使您可以用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化。 2.1.1 定義命令類接口 2.1.2 定義命令執(zhí)行者 2.1.3 被處理對(duì)象Stock。 菜鳥(niǎo)教程定義 被處理的對(duì)象 是Stock。 2.1.4 封裝處理Stock的命令 雖然 Runnable 接口本身并不是一個(gè)命令模式

    2024年02月06日
    瀏覽(25)
  • 《golang設(shè)計(jì)模式》第三部分·行為型模式-02-命令模式(Command)

    《golang設(shè)計(jì)模式》第三部分·行為型模式-02-命令模式(Command)

    命令模式(Command)將類的業(yè)務(wù)行為以對(duì)象的方式封裝,以便實(shí)現(xiàn)行為的參數(shù)化、撤銷或重做等需求。 非命令模式的困惑: 類的行為在運(yùn)行時(shí)是以實(shí)例方法的形式調(diào)用的,當(dāng)方法執(zhí)行完畢并返回后,方法棧將會(huì)消除;方法的運(yùn)行狀態(tài)(主要指局部變量)保存在棧幀中,它會(huì)隨

    2024年02月07日
    瀏覽(25)
  • 命令設(shè)計(jì)模式(Command Pattern)[論點(diǎn):概念、組成角色、相關(guān)圖示、示例代碼、框架中的運(yùn)用、適用場(chǎng)景]

    命令設(shè)計(jì)模式(Command Pattern)[論點(diǎn):概念、組成角色、相關(guān)圖示、示例代碼、框架中的運(yùn)用、適用場(chǎng)景]

    ??????? 命令設(shè)計(jì)模式 (Command Pattern)是一種行為設(shè)計(jì)模式,它將請(qǐng)求的操作封裝為一個(gè)對(duì)象,從而實(shí)現(xiàn)請(qǐng)求者和執(zhí)行者之間的解耦。這樣,請(qǐng)求者只需要知道如何發(fā)送請(qǐng)求,而無(wú)需關(guān)心請(qǐng)求的具體執(zhí)行過(guò)程。命令模式在很多場(chǎng)景下都非常有用,例如撤銷操作、延遲執(zhí)行、

    2024年02月01日
    瀏覽(25)
  • 說(shuō)說(shuō)設(shè)計(jì)模式~委派模式

    回到目錄 委派模式(Delegate Pattern)又叫作委托模式,是一種面向?qū)ο蟮脑O(shè)計(jì)模式,允許對(duì)象組合實(shí)現(xiàn)與繼承相同的代碼重用。它的基本作用就是負(fù)責(zé)任務(wù)的調(diào)用和分配,是一種特殊的靜態(tài)代理模式,可以理解為全權(quán)代理模式,但是代理模式注重過(guò)程,而委派模式注重結(jié)果。委派模式屬于

    2024年02月11日
    瀏覽(18)
  • 說(shuō)說(shuō)設(shè)計(jì)模式~責(zé)任鏈模式

    說(shuō)說(shuō)設(shè)計(jì)模式~責(zé)任鏈模式

    回到目錄 它是一種設(shè)計(jì)模塊,主要將操作流程與具體操作解耦,讓每個(gè)操作都可以設(shè)置自己的操作流程,這對(duì)于工作流應(yīng)用是一個(gè)不錯(cuò)的選擇! 下面是官方標(biāo)準(zhǔn)的定義:責(zé)任鏈模式是一種設(shè)計(jì)模式。在責(zé)任鏈模式里,很多對(duì)象由每一個(gè)對(duì)象對(duì)其下家的引用而連接起來(lái)形成一

    2024年02月11日
    瀏覽(22)
  • 說(shuō)說(shuō)設(shè)計(jì)模式~管道模式(pipeline)

    回到目錄 復(fù)合的責(zé)任鏈,類似于管道模式,只要符合條件,說(shuō)會(huì)向下傳遞,不會(huì)終止 按最高優(yōu)先級(jí)去使用,符合就用,不符合就走下一個(gè)策略 具體鏈條,有點(diǎn)像pipeline管道模式 BlackHandler ip=172.17.0.11 RateLimitHandler header=is-black WriteBlackHandler header=real-black AbstractHandler 抽象的責(zé)任處

    2024年02月11日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包