当前位置: 首页 > wzjs >正文

网站怎么做导航有专门做背景音乐的网站吗

网站怎么做导航,有专门做背景音乐的网站吗,网上做网站怎么防止被骗,500强企业排名(2022最新名单)命令模式(Command Pattern) 如果任务有多个复杂的操作,可以使用命令模式将任务的操作封装为命令对象。这些命令对象可以在需要时按顺序执行,方便管理任务执行的逻辑和回滚操作。 示例: class Command { public:virtu…

命令模式(Command Pattern)
如果任务有多个复杂的操作,可以使用命令模式将任务的操作封装为命令对象。这些命令对象可以在需要时按顺序执行,方便管理任务执行的逻辑和回滚操作。

示例:
class Command {
public:virtual void execute() = 0;  // 执行命令
};class RunTaskCommand : public Command {
private:Task *task;public:RunTaskCommand(Task *task) : task(task) {}void execute() override {task->runTask();}
};






命令模式(Command Pattern)是一种行为设计模式,它将请求封装为一个对象,从而使用户可用不同的请求对客户进行参数化。它还可以将请求排队、记录请求日志,以及支持可撤销的操作。以下是对命令模式的详细解释,以及如何理解它的用途。

命令模式的核心概念

  1. Command(命令接口)

    • 定义了一个执行操作的接口,通常包含一个 execute() 方法。
    • 所有具体命令类都实现这个接口。
  2. ConcreteCommand(具体命令类)

    • 实现了 Command 接口,具体执行某个操作。
    • 通常包含一个对 Receiver(接收者)的引用,调用 Receiver 的方法来完成实际操作。
  3. Receiver(接收者)

    • 实际执行操作的对象。
    • 具体命令类会调用 Receiver 的方法来完成实际操作。
  4. Invoker(调用者)

    • 要求命令执行这个请求的对象。
    • 它调用命令对象的 execute() 方法,但并不知道具体的命令逻辑。
  5. Client(客户端)

    • 创建具体命令对象,并将具体命令对象和接收者对象组装在一起。
    • 客户端将命令对象传递给调用者对象。

示例代码解析

以下是一个完整的命令模式示例,包括命令接口、具体命令类、接收者类和调用者类。

1. 命令接口(Command)
class Command {
public:virtual ~Command() {}virtual void execute() = 0;  // 执行命令
};
2. 接收者类(Receiver)
class Task {
public:virtual ~Task() {}virtual void runTask() = 0;  // 实际执行的任务
};
3. 具体任务类(Concrete Receiver)
class MetricTask : public Task {
public:void runTask() override {std::cout << "Executing Metric Task" << std::endl;}
};class MillimeterTask : public Task {
public:void runTask() override {std::cout << "Executing Millimeter Task" << std::endl;}
};
4. 具体命令类(Concrete Command)
class RunTaskCommand : public Command {
private:Task* task;public:RunTaskCommand(Task* task) : task(task) {}void execute() override {task->runTask();}
};
5. 调用者类(Invoker)
class TaskInvoker {
private:Command* command;public:void setCommand(Command* cmd) {command = cmd;}void executeCommand() {if (command) {command->execute();}}
};

使用示例

以下是如何使用命令模式来执行任务的示例:

#include <iostream>int main() {// 创建具体的任务对象MetricTask metricTask;MillimeterTask millimeterTask;// 创建具体的命令对象,并将任务对象传递给命令对象RunTaskCommand metricCommand(&metricTask);RunTaskCommand millimeterCommand(&millimeterTask);// 创建调用者对象,并将命令对象传递给调用者TaskInvoker invoker;invoker.setCommand(&metricCommand);invoker.executeCommand();  // 输出: Executing Metric Taskinvoker.setCommand(&millimeterCommand);invoker.executeCommand();  // 输出: Executing Millimeter Taskreturn 0;
}

输出

Executing Metric Task
Executing Millimeter Task

命令模式的用途

  1. 解耦客户端和接收者

    • 客户端(调用者)不需要直接调用接收者的方法,而是通过命令对象间接调用。这使得客户端和接收者之间解耦,客户端不需要知道具体的实现细节。
  2. 支持撤销和重做操作

    • 命令模式可以扩展为支持撤销和重做操作。通过在命令对象中保存操作前的状态,可以在需要时撤销操作。
  3. 支持命令队列和日志记录

    • 命令对象可以被存储在队列中,按顺序执行。同时,命令对象可以记录执行的操作,便于日志记录和审计。
  4. 支持宏命令

    • 可以将多个命令组合成一个宏命令,通过一个命令对象来执行多个操作。

总结

命令模式的核心在于将请求封装为一个对象,从而实现解耦和扩展性。通过命令模式,客户端可以不知道具体的实现细节,同时支持撤销、重做、命令队列和日志记录等功能。希望这个解释和示例能帮助你更好地理解命令模式的用途和实现方式。


文章转载自:

http://1qwpkokD.mhgpz.cn
http://x16VCPiv.mhgpz.cn
http://k7YhBRur.mhgpz.cn
http://wiTCq7ql.mhgpz.cn
http://qc9tRsFf.mhgpz.cn
http://3uyth7km.mhgpz.cn
http://6yONDQuD.mhgpz.cn
http://6fyHLCvs.mhgpz.cn
http://YaYUa1fm.mhgpz.cn
http://T6CsNsv4.mhgpz.cn
http://g1CI6IDF.mhgpz.cn
http://UgLWCi0q.mhgpz.cn
http://91MKH49K.mhgpz.cn
http://zmVRDZV7.mhgpz.cn
http://WVb5yglZ.mhgpz.cn
http://WOF3ehrk.mhgpz.cn
http://YipP3MNT.mhgpz.cn
http://RJFnDppy.mhgpz.cn
http://ssqQIzaK.mhgpz.cn
http://G6eQboqt.mhgpz.cn
http://6tVNk1Eb.mhgpz.cn
http://NLdZVrjD.mhgpz.cn
http://zrmDTaoO.mhgpz.cn
http://zkykKgzO.mhgpz.cn
http://gPcFe7rx.mhgpz.cn
http://9jbnixMS.mhgpz.cn
http://yL8w52S2.mhgpz.cn
http://Qgo4Vkxt.mhgpz.cn
http://ecf9EOsH.mhgpz.cn
http://TwurWzuN.mhgpz.cn
http://www.dtcms.com/wzjs/758439.html

相关文章:

  • 东莞专业做淘宝网站建设餐饮店如何引流与推广
  • 网站建站前seo注意建站开发工具
  • 网站建设及那个科目php能建立网站吗
  • 江苏省住房建设厅网站首页湛江专业网站建设公司
  • 网站后台如何设计郑州证件制作
  • 质量检测中心培训网站网站建设与运维预算
  • 做中国o2o网站领导义乌网站建设公司哪家好
  • 深圳个人网站设计龙海网站定制
  • 正品查询网站怎么做mysql8 wordpress
  • 昆明网站服务器云南网站seo服务
  • wordpress子目录建站湛江免费建站公司
  • 网站后台生成html网络推广软件排行榜
  • 做淘宝网站需要多少钱上海工程公司
  • 个人备案网站做盈利合法吗大兴安岭做网站
  • 郑州建站公司网站搜索seo引擎
  • 企业网站的设计策划浙江建设招生网站
  • 菏泽网的网站建设的联系方式网站开发实用技术相关论文
  • 沈阳军成网站建设怎样自己搭建网站
  • 企业建设网站要注意的要素科研网站建设
  • 重庆网站建设公自适应企业网站源码
  • 我的家乡网站建设模板下载wordpress如何调用js
  • 建设银行东莞招聘网站视频网站开发报告
  • 装修设计网站排行榜贵阳做网站的大公司
  • 小榄网站建设推广主要的电子商务网站有哪些
  • 网站建设分几块wordpress 课程系统
  • 网站联盟的收益模式设计师应该关注的网站
  • 色流网站如何做通用ppt模板免费
  • 网站优化价格视频号小店
  • 做网站资料准备北京天津网站建设
  • 网站管理系统后台南阳网站推广招聘