在线推广网站的方法,电商怎么做新手入门,国内永久在线免费建站,开网店怎么找货源一件代发目录
1、命令模式#xff08;Command Pattern#xff09;含义
2、命令模式的UML图学习
3、命令模式的应用场景
4、命令模式的优缺点
5、C实现命令模式的实例 1、命令模式#xff08;Command Pattern#xff09;含义 命令模式#xff08;Command#xff09;#xff…目录
1、命令模式Command Pattern含义
2、命令模式的UML图学习
3、命令模式的应用场景
4、命令模式的优缺点
5、C实现命令模式的实例 1、命令模式Command Pattern含义 命令模式Command将一个请求封装为一个对象从而使你可用不同的请求对客户进行参数化对请求排队或记录请求日志以及支持可撤销的操作。【DP】 命令模式Command Pattern是一种行为型设计模式它将请求封装成一个对象从而使不同的请求可以参数化其他对象。通过将请求发送者和接收者解耦命令模式可以支持请求的排队、记录日志、撤销等操作。 2、命令模式的UML图学习 命令模式主要包含以下几个角色
1命令接口Command定义了执行命令的方法。
2具体命令Concrete Command实现了命令接口并持有一个接收者对象的引用负责调用接收者的方法来执行具体的操作。
3接收者Receiver执行具体操作的对象。
4请求者Invoker持有一个命令对象并在需要时调用命令对象的执行方法。 3、命令模式的应用场景
1需要将请求发送者和接收者解耦的情况。
2需要支持撤销、重做等操作的情况。
3需要支持请求排队、记录日志等操作的情况。 4、命令模式的优缺点
1优点
1解耦请求发送者和接收者请求发送者只需要知道如何发送命令而无需关心具体的接收者和操作。
2可扩展性可以方便地新增或修改命令类无需修改已有的代码。
3支持撤销和重做由于命令被封装成对象可以轻松地实现撤销和重做操作。
2缺点
1类的数量增加每个具体命令都需要一个对应的类可能会导致类的数量过多。
2系统复杂性增加引入了额外的类和对象增加了系统的复杂性。 5、C实现命令模式的实例 #include iostream
#include vector// 命令接口
class Command
{
public:virtual void execute() 0;
};// 具体命令A
class ConcreteCommandA : public Command
{
private:// 接收者对象Receiver* receiver;public:ConcreteCommandA(Receiver* recv) : receiver(recv) {}void execute() override {receiver-actionA();}
};// 具体命令B
class ConcreteCommandB : public Command
{
private:// 接收者对象Receiver* receiver;public:ConcreteCommandB(Receiver* recv) : receiver(recv) {}void execute() override {receiver-actionB();}
};// 接收者
class Receiver
{
public:void actionA() {std::cout 执行接收者的操作A std::endl;}void actionB() {std::cout 执行接收者的操作B std::endl;}
};// 请求者
class Invoker
{
private:std::vectorCommand* commands;public:void addCommand(Command* command) {commands.push_back(command);}void executeCommands() {for (Command* command : commands) {command-execute();}}
};int main()
{// 创建接收者对象Receiver receiver;// 创建具体命令对象并设置接收者ConcreteCommandA commandA(receiver);ConcreteCommandB commandB(receiver);// 创建请求者对象并添加命令Invoker invoker;invoker.addCommand(commandA);invoker.addCommand(commandB);// 执行命令invoker.executeCommands();return 0;
}在上述示例中命令接口Command定义了执行命令的方法。具体命令Concrete Command实现了命令接口并持有一个接收者对象的引用负责调用接收者的方法来执行具体的操作。接收者Receiver执行具体的操作。请求者Invoker持有一个或多个命令对象并在需要时调用命令对象的执行方法。