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

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

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

????????命令模式,它將請(qǐng)求封裝成一個(gè)對(duì)象,從而允許客戶端參數(shù)化操作隊(duì)列、記錄請(qǐng)求日志、支持撤銷操作等。在命令模式中,有四個(gè)核心角色:命令接口(Command)、具體命令(ConcreteCommand)、調(diào)用者(Invoker)、接收者(Receiver)。
① 命令接口(Command):聲明了執(zhí)行命令的方法,是命令對(duì)象的抽象表示。
② 具體命令(ConcreteCommand):實(shí)現(xiàn)了命令接口,具體定義了要執(zhí)行的操作。
③ 調(diào)用者(Invoker):負(fù)責(zé)調(diào)用命令對(duì)象執(zhí)行請(qǐng)求,它并不知道具體的命令細(xì)節(jié),只知道調(diào)用命令對(duì)象的方法來(lái)完成請(qǐng)求。
④ 接收者(Receiver):負(fù)責(zé)實(shí)際執(zhí)行命令指定的操作。
命令模式的核心思想是將請(qǐng)求的發(fā)送者與請(qǐng)求的接收者解耦,通過(guò)命令對(duì)象將二者進(jìn)行綁定。這樣可以實(shí)現(xiàn)對(duì)請(qǐng)求的封裝、記錄、排隊(duì)和撤銷操作等功能。

1、場(chǎng)景設(shè)計(jì)

實(shí)現(xiàn)場(chǎng)景:請(qǐng)求者發(fā)出命令,接收者接收命令并執(zhí)行一個(gè)動(dòng)作。

2、C++實(shí)現(xiàn)

`Command` 是命令接口,定義了一個(gè)純虛的 `execute()` 方法。`ConcreteCommand` 是具體命令,實(shí)現(xiàn)了 `Command` 接口,并在 `execute()` 方法中調(diào)用了接收者的 `action()` 方法。`Receiver` 是接收者,負(fù)責(zé)實(shí)際執(zhí)行命令指定的操作。`Invoker` 是調(diào)用者,負(fù)責(zé)維護(hù)一系列命令,并負(fù)責(zé)調(diào)用這些命令執(zhí)行請(qǐng)求。在 `main()` 函數(shù)中,我們創(chuàng)建了一個(gè)接收者、一個(gè)具體命令和一個(gè)調(diào)用者,并將具體命令添加到調(diào)用者中執(zhí)行。

#include <iostream>
#include <vector>

// 命令接口
class Command {
    public:
        virtual void execute() = 0;
};

// 接收者
class Receiver {
    public:
        void action() {
            std::cout << "Receiver: Executing action" << std::endl;
        }
};

// 具體命令
class ConcreteCommand : public Command {
    private:
        class Receiver *receiver;

    public:
        ConcreteCommand(class Receiver *recv) : receiver(recv) {}

        void execute() override {
            receiver->action();
        }
};

// 調(diào)用者
class Invoker {
    private:
        std::vector<Command *> commands;

    public:
        void addCommand(Command *cmd) {
            commands.push_back(cmd);
        }

        void executeCommands() {
            for (Command *cmd : commands) {
                cmd->execute();
            }
            commands.clear();
        }
};

int main() {
    Receiver *receiver = new Receiver();
    Command *command = new ConcreteCommand(receiver);
    Invoker *invoker = new Invoker();

    invoker->addCommand(command);
    invoker->executeCommands();

    delete receiver;
    delete command;
    delete invoker;

    return 0;
}

3、Java實(shí)現(xiàn)

`Command` 是命令接口,定義了一個(gè) `execute()` 方法。`ConcreteCommand` 是具體命令,實(shí)現(xiàn)了 `Command` 接口,并在 `execute()` 方法中調(diào)用了接收者的 `action()` 方法。`Receiver` 是接收者,負(fù)責(zé)實(shí)際執(zhí)行命令指定的操作。`Invoker` 是調(diào)用者,負(fù)責(zé)調(diào)用命令對(duì)象執(zhí)行請(qǐng)求。在 `main()` 方法中,我們創(chuàng)建了一個(gè)接收者、一個(gè)具體命令和一個(gè)調(diào)用者,并將具體命令綁定到調(diào)用者上執(zhí)行。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-847358.html

package behavioralpattern.command;

public class CommandDemo {
    // 命令接口
    interface Command {
        void execute();
    }
    // 具體命令
    static class ConcreteCommand implements Command {
        private Receiver receiver;
        ConcreteCommand(Receiver receiver) {
            this.receiver = receiver;
        }
        @Override
        public void execute() {
            receiver.action();
        }
    }

    // 接收者
    static class Receiver {
        void action() {
            System.out.println("Receiver: Executing action");
        }
    }

    // 調(diào)用者
    static class Invoker {
        private Command command;
        void setCommand(Command command) {
            this.command = command;
        }
        void executeCommand() {
            command.execute();
        }
    }

    public static void main(String[] args) {
        Receiver receiver = new Receiver();
        Command command = new ConcreteCommand(receiver);
        Invoker invoker = new Invoker();

        invoker.setCommand(command);
        invoker.executeCommand();
    }
}

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

    設(shè)計(jì)模式(二十):行為型之迭代器模式

    設(shè)計(jì)模式系列文章 設(shè)計(jì)模式(一):創(chuàng)建型之單例模式 設(shè)計(jì)模式(二、三):創(chuàng)建型之工廠方法和抽象工廠模式 設(shè)計(jì)模式(四):創(chuàng)建型之原型模式 設(shè)計(jì)模式(五):創(chuàng)建型之建造者模式 設(shè)計(jì)模式(六):結(jié)構(gòu)型之代理模式 設(shè)計(jì)模式(七):結(jié)構(gòu)型之適配器模式 設(shè)計(jì)模式(八):結(jié)構(gòu)型之裝

    2024年02月09日
    瀏覽(20)
  • 【Java 設(shè)計(jì)模式】行為型之責(zé)任鏈模式

    責(zé)任鏈模式(Chain of Responsibility Pattern)是一種行為型設(shè)計(jì)模式,用于將請(qǐng)求發(fā)送者和接收者解耦,使得多個(gè)對(duì)象都有機(jī)會(huì)處理請(qǐng)求。責(zé)任鏈模式通過(guò)創(chuàng)建一個(gè)處理請(qǐng)求的鏈,將請(qǐng)求沿著鏈傳遞,直到有一個(gè)對(duì)象能夠處理為止。在本文中,我們將深入研究Java中責(zé)任鏈模式的定

    2024年01月24日
    瀏覽(23)
  • C++設(shè)計(jì)模式行為型之觀察者模式

    一、 概述 ????????觀察者模式定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。 二、 示例代碼 #include list class Subject; class Observer { public: ?? ?virtual ~Observer(); ?? ?virtual void Update(Subject* theChangedSubject) =

    2024年02月14日
    瀏覽(28)
  • 深入理解設(shè)計(jì)模式-行為型之觀察者

    觀察者模式(Observer Pattern)是一種行為型設(shè)計(jì)模式,它定義了一種 一對(duì)多的依賴關(guān)系 ,讓 多個(gè)觀察者對(duì)象 同時(shí)監(jiān)聽(tīng)一個(gè) 主題對(duì)象 ,當(dāng) 主題對(duì)象 發(fā)生 變化 時(shí),所有依賴于它的 觀察者 對(duì)象都會(huì)得到 通知并更新。 在觀察者模式中,有兩個(gè)主要角色: Subject(主題):維護(hù)

    2024年02月12日
    瀏覽(27)
  • 深入理解設(shè)計(jì)模式-行為型之模板(和回調(diào)區(qū)別聯(lián)系)

    模板設(shè)計(jì)模式(Template Design Pattern)是一種行為型設(shè)計(jì)模式,它定義了一個(gè)算法的骨架,將算法的一些步驟延遲到子類中實(shí)現(xiàn)。模板設(shè)計(jì)模式允許 子類在不改變算法結(jié)構(gòu)的情況下重新定義算法的某些步驟。 模板設(shè)計(jì)模式的核心思想是:將一個(gè)算法的 主要結(jié)構(gòu)定義在一個(gè)模板

    2024年02月12日
    瀏覽(26)
  • 設(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ì)模式行為型——命令模式

    設(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)
  • 行為型設(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日
    瀏覽(25)
  • 設(shè)計(jì)模式之命令模式【行為型模式】

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

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 學(xué)習(xí)的最大理由是想擺脫平庸,早一天就多一份人生的精彩;遲一天就多一天平庸的困擾。各位小伙伴,如果您: 想系統(tǒng)/深入學(xué)習(xí)某技術(shù)知識(shí)點(diǎn)… 一個(gè)人摸索學(xué)習(xí)很難堅(jiān)持,想組團(tuán)高效學(xué)習(xí)… 想寫博

    2024年02月01日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包