c++工厂模式和命令模式组合使用
时间: 2024-06-15 09:09:04 浏览: 85
工厂模式和命令模式可以结合使用,以实现更灵活和可扩展的代码结构。下面是一个示例,演示了如何在C++中使用工厂模式和命令模式组合。
首先,我们定义一个抽象基类`Command`,它包含一个纯虚函数`execute()`,用于执行具体的命令操作。然后,我们派生出多个具体的命令类,每个类都实现了`execute()`函数以执行特定的操作。
接下来,我们定义一个工厂类`CommandFactory`,它负责根据不同的输入参数创建相应的命令对象。工厂类可以根据需要动态地创建不同的命令对象,从而实现了解耦和灵活性。
示例代码如下所示:
```cpp
#include <iostream>
#include <string>
#include <map>
// 命令基类
class Command {
public:
virtual void execute() = 0;
};
// 具体命令类A
class CommandA : public Command {
public:
void execute() override {
std::cout << "Executing Command A" << std::endl;
// 具体的命令操作
}
};
// 具体命令类B
class CommandB : public Command {
public:
void execute() override {
std::cout << "Executing Command B" << std::endl;
// 具体的命令操作
}
};
// 命令工厂类
class CommandFactory {
public:
Command* createCommand(const std::string& commandType) {
if (commandType == "A") {
return new CommandA();
} else if (commandType == "B") {
return new CommandB();
} else {
return nullptr;
}
}
};
int main() {
CommandFactory factory;
// 使用工厂创建命令对象
Command* commandA = factory.createCommand("A");
Command* commandB = factory.createCommand("B");
// 执行命令
commandA->execute();
commandB->execute();
// 释放资源
delete commandA;
delete commandB;
return 0;
}
```
在上面的示例中,我们使用工厂模式创建了两个具体的命令对象`CommandA`和`CommandB`,然后通过调用它们的`execute()`函数来执行具体的命令操作。工厂类`CommandFactory`根据输入参数动态地创建相应的命令对象,实现了解耦和灵活性。
阅读全文