C++ 设计模式:命令模式(Command Pattern)

链接:C++ 设计模式
链接:C++ 设计模式 - 访问者模式

命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。

1. 问题分析

在开发中,我们经常需要向某个对象发送请求,但我们希望请求的发送者和接收者解耦。我们还可能需要对请求进行排队、记录日志,甚至支持撤销操作。

命令模式通过将请求封装成一个独立的对象,使得请求的发送者和接收者解耦。每个命令对象都实现一个统一的接口,包含执行请求的方法。这样,我们可以用不同的命令对象对客户进行参数化,并且可以很容易地扩展新的命令。

2.实现步骤

  1. 定义命令接口(Command):声明执行请求的方法。
  2. 实现具体命令类(ConcreteCommand):实现命令接口,执行具体的请求。
  3. 定义接收者类(Receiver):包含执行具体请求的方法。
  4. 定义调用者类(Invoker):持有命令对象,并在某个时刻调用命令对象的执行方法。
  5. 客户端代码(Client):创建具体命令对象,并将其传递给调用者。

3.代码示例

以机器人示例。

3.1.定义命令接口

class Command {
   
 public:
  virtual ~Command() = default;
  virtual void execute() = 0;
};

3.2.实现具体命令类

// 接收者类:机器人
class Robot {
   
 public:
  void moveForward() {
    std::cout << "Robot moves forward" << std::endl; }

  void moveBackward() {
    std::cout << "Robot moves backward" << std::endl; }

  void turnLeft() {
    std::cout << "Robot turns left" << std::endl; }

  void turnRight() {
    std::cout << "Robot turns right" << std::endl; }
};

3.3.定义接收者类

// 具体命令类:前进
class MoveForwardCommand 

你可能感兴趣的:(C++设计模式,c++,设计模式,命令模式)