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

【設(shè)計(jì)模式|行為型】命令模式(Command Pattern)

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

說(shuō)明

命令模式(Command Pattern)是一種行為設(shè)計(jì)模式,它將請(qǐng)求封裝為一個(gè)對(duì)象,以便在不同的請(qǐng)求者和接收者之間進(jìn)行解耦、參數(shù)化和操作的隊(duì)列化。命令模式允許你將具體的請(qǐng)求封裝為對(duì)象,這些對(duì)象之間彼此獨(dú)立,并且可以用不同的請(qǐng)求對(duì)客戶端進(jìn)行參數(shù)化。

結(jié)構(gòu)
  • 命令接口(Command):聲明執(zhí)行命令的方法。
  • 具體命令類(Concrete Command):實(shí)現(xiàn)命令接口,負(fù)責(zé)執(zhí)行具體的操作。
  • 接收者類(Receiver):包含了具體的操作方法,由具體命令類調(diào)用。
  • 請(qǐng)求者類(Invoker):持有命令對(duì)象,并在需要時(shí)調(diào)用命令的執(zhí)行方法。
工作原理
  1. 創(chuàng)建命令接口,并聲明執(zhí)行命令的方法,如execute()。
  2. 創(chuàng)建具體命令類,實(shí)現(xiàn)命令接口,并在execute()方法中調(diào)用接收者類的具體操作方法。
  3. 創(chuàng)建接收者類,包含了具體的操作方法。
  4. 創(chuàng)建請(qǐng)求者類,持有命令對(duì)象,在需要時(shí)調(diào)用命令的execute()方法。
優(yōu)點(diǎn)
  • 解耦請(qǐng)求者和接收者:命令模式將請(qǐng)求者和接收者之間解耦,使得它們可以獨(dú)立變化,互不影響。
  • 可擴(kuò)展性:可以輕松添加新的命令類和接收者類,而不會(huì)影響已有的代碼。
  • 可撤銷操作:可以通過(guò)維護(hù)一個(gè)命令歷史棧,實(shí)現(xiàn)對(duì)命令的撤銷和重做。
缺點(diǎn)
  • 增加了類和對(duì)象的數(shù)量:引入命令對(duì)象和接收者類,會(huì)增加系統(tǒng)中的類和對(duì)象的數(shù)量。
  • 代碼結(jié)構(gòu)復(fù)雜化:使用命令模式需要定義許多新的類和接口,因此會(huì)增加代碼結(jié)構(gòu)的復(fù)雜性。
使用場(chǎng)景
  • 需要將請(qǐng)求者和接收者解耦,以便能夠在不同的請(qǐng)求者和接收者之間進(jìn)行靈活的變動(dòng)和組合。
  • 需要支持撤銷操作。
  • 需要將一系列的操作隊(duì)列化,即可以將命令對(duì)象存儲(chǔ)在列表中,并按順序執(zhí)行。

示例

下面以一個(gè)簡(jiǎn)單的股票交易系統(tǒng)為例,介紹命令模式的應(yīng)用。

假設(shè)我們有一個(gè)股票交易系統(tǒng),我們希望實(shí)現(xiàn)以下功能:

  • 可以買入股票(BuyStock命令)。
  • 可以賣出股票(SellStock命令)。
  • 可以撤銷上一次的交易操作(Undo命令)。

首先,我們定義命令接口Command,聲明了一個(gè)execute()方法:

public interface Command {
    void execute();
}

然后,我們創(chuàng)建具體的買入股票命令BuyStockCommand,實(shí)現(xiàn)了Command接口:

public class BuyStockCommand implements Command {
    private StockTrade stockTrade;

    public BuyStockCommand(StockTrade stockTrade) {
        this.stockTrade = stockTrade;
    }

    public void execute() {
        stockTrade.buy();
    }
}

再創(chuàng)建具體的賣出股票命令SellStockCommand,同樣實(shí)現(xiàn)了Command接口:

public class SellStockCommand implements Command {
    private StockTrade stockTrade;

    public SellStockCommand(StockTrade stockTrade) {
        this.stockTrade = stockTrade;
    }

    public void execute() {
        stockTrade.sell();
    }
}

接下來(lái),我們創(chuàng)建股票交易類StockTrade,它包含了具體的買入和賣出操作:

public class StockTrade {
    public void buy() {
        System.out.println("買入股票");
    }

    public void sell() {
        System.out.println("賣出股票");
    }
}

最后,我們創(chuàng)建請(qǐng)求者類StockBroker,它持有命令對(duì)象,并在需要時(shí)調(diào)用命令的execute()方法:

public class StockBroker {
    private Command buyStockCommand;
    private Command sellStockCommand;
    private Command undoCommand;

    public StockBroker(Command buyStockCommand, Command sellStockCommand, Command undoCommand) {
        this.buyStockCommand = buyStockCommand;
        this.sellStockCommand = sellStockCommand;
        this.undoCommand = undoCommand;
    }

    public void buyStock() {
        buyStockCommand.execute();
    }

    public void sellStock() {
        sellStockCommand.execute();
    }

    public void undo() {
        undoCommand.execute();
    }
}

現(xiàn)在,我們可以創(chuàng)建股票交易系統(tǒng)的實(shí)例,并進(jìn)行操作:

public class CommandExample {
    public static void main(String[] args) {
        // 創(chuàng)建股票交易對(duì)象
        StockTrade stockTrade = new StockTrade();

        // 創(chuàng)建具體的命令對(duì)象
        Command buyStockCommand = new BuyStockCommand(stockTrade);
        Command sellStockCommand = new SellStockCommand(stockTrade);

        // 創(chuàng)建請(qǐng)求者對(duì)象
        StockBroker stockBroker = new StockBroker(buyStockCommand, sellStockCommand, buyStockCommand);

        // 執(zhí)行買入操作
        stockBroker.buyStock(); // 買入股票

        // 執(zhí)行賣出操作
        stockBroker.sellStock(); // 賣出股票

        // 撤銷操作
        stockBroker.undo(); // 買入股票
    }
}

運(yùn)行結(jié)果如下:

買入股票
賣出股票
買入股票文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-618679.html

到了這里,關(guān)于【設(shè)計(jì)模式|行為型】命令模式(Command Pattern)的文章就介紹完了。如果您還想了解更多內(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)文章

  • 設(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日
    瀏覽(24)
  • 命令設(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)
  • (三)行為模式:2、命令模式(Command Pattern)(C++示例)

    (三)行為模式:2、命令模式(Command Pattern)(C++示例)

    目錄 1、命令模式(Command Pattern)含義 2、命令模式的UML圖學(xué)習(xí) 3、命令模式的應(yīng)用場(chǎng)景 4、命令模式的優(yōu)缺點(diǎn) 5、C++實(shí)現(xiàn)命令模式的實(shí)例 1、命令模式(Command Pattern)含義 命令模式(Command),將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化;對(duì)請(qǐng)求排

    2024年02月12日
    瀏覽(19)
  • 設(shè)計(jì)模式行為模式-命令模式

    設(shè)計(jì)模式行為模式-命令模式

    命令模式(Command Pattern)是一種行為型設(shè)計(jì)模式,用于將請(qǐng)求封裝為對(duì)象,從而使你可以使用不同的請(qǐng)求、隊(duì)列或者日志請(qǐng)求來(lái)參數(shù)化其他對(duì)象。這樣可以實(shí)現(xiàn)請(qǐng)求的參數(shù)化操作、隊(duì)列化和日志化,且能夠支持撤銷操作。 命令模式由以下幾個(gè)核心組件組成: 命令(Command)

    2024年02月10日
    瀏覽(29)
  • 設(shè)計(jì)模式-命令模式(Command)

    設(shè)計(jì)模式-命令模式(Command)

    命令模式(Command Pattern)是一種行為型設(shè)計(jì)模式,也被稱為動(dòng)作模式或事務(wù)模式。它的核心思想是將一個(gè)請(qǐng)求封裝成一個(gè)對(duì)象,從而使你可以用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化。對(duì)請(qǐng)求排隊(duì)或記錄,以及支持可撤銷的操作。命令模式的主要目的是將發(fā)出請(qǐng)求的對(duì)象和執(zhí)行請(qǐng)求的

    2024年04月27日
    瀏覽(33)
  • 說(shuō)說(shuō)設(shè)計(jì)模式~命令模式(command)

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

    2024年02月11日
    瀏覽(24)
  • 行為型設(shè)計(jì)模式——命令模式

    行為型設(shè)計(jì)模式——命令模式

    日常生活中,我們出去吃飯都會(huì)遇到下面的場(chǎng)景。 定義: 將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,使發(fā)出請(qǐng)求的責(zé)任和執(zhí)行請(qǐng)求的責(zé)任分割開(kāi)。這樣兩者之間通過(guò)命令對(duì)象進(jìn)行溝通,這樣方便將命令對(duì)象進(jìn)行存儲(chǔ)、傳遞、調(diào)用、增加與管理。命令模式包含以下主要角色: 抽象命令類(

    2024年01月17日
    瀏覽(24)
  • 設(shè)計(jì)模式行為型——命令模式

    設(shè)計(jì)模式行為型——命令模式

    目錄 命令模式的定義? ? ? 命令模式的實(shí)現(xiàn) 命令模式角色 命令模式類圖 命令模式舉例 命令模式代碼實(shí)現(xiàn) 命令模式的特點(diǎn) 優(yōu)點(diǎn) 缺點(diǎn) 使用場(chǎng)景 注意事項(xiàng) ????????命令模式(Command Pattern)是一種數(shù)據(jù)驅(qū)動(dòng)的設(shè)計(jì)模式,它屬于行為型模式。是對(duì)命令的封裝,每一個(gè)命令都是

    2024年02月14日
    瀏覽(26)
  • 【設(shè)計(jì)模式--行為型--命令模式】

    【設(shè)計(jì)模式--行為型--命令模式】

    定義 將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,使發(fā)出請(qǐng)求的責(zé)任和執(zhí)行請(qǐng)求的責(zé)任分割開(kāi)。這樣兩者之間通過(guò)命令對(duì)象進(jìn)行溝通,這樣方便將命令對(duì)象進(jìn)行存儲(chǔ),傳遞,調(diào)用,增加與管理。 結(jié)構(gòu) 抽象命令類(Command)角色:定義命令的接口,聲明執(zhí)行的方法。 具體命令(Concrete Command)

    2024年02月04日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包