大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。
class MenuItem {
public:
void setCommand(Command* comand) { m_command = command; }
void onClicked() {
m_command->execute();
}
private:
Command* command;
}
class Command {
public:
virtual void execute();
virtual bool isEnable();
};
class CopyCommand {
public:
virtual void execute() {
m_receiver->action();
}
private:
CopyReceiver* m_receiver;
};
class DeleteCommand {
public:
virtual void execute() {
m_enable = m_receiver->action();
}
bool isEnable() {
return m_enable;
}
private:
DeleteReceiver* m_receiver;
bool m_enable;
};
MenuItem* copyItem = new MenuItem("Copy");
MenuItem* deleteItem = new MenuItem("Delete");
MenuItem* undoItem = new MenuItem("Undo");
Button* copyButton = new Button("Copy");
Button* deleteButton = new Button("Delete");
Button* undoButton = new Button("Undo");
Command* copyCommand = new CopyCommand();
Command* deleteCommand = new DeleteCommand();
Command* undoCommand = new UndoCommand();
copyItem->setCommand(copyCommand);
deleteItem->setCommand(deleteCommand);
undoItem->setCommand(undoCommand);
copyButton->setCommand(copyCommand);
deleteButton->setCommand(deleteCommand);
undoButton->setCommand(undoCommand);
- 抽象出待运行的操作以參数化某对象,Command模式就像一个回调函数的对象实现。
- 在不同的时刻指定、排列和运行请求,Commad有一个与初始请求无关的生存期。
- 能够支持取消操作,在Command对象运行execute方法的之前把信息保存,提供一个unExecute方法恢复在运行前。也能够使用一个专门的Command来保存全部运行了的Commond对象比方UndoCommand来达到回滚操作。
- 支持事物(Transaction),对一系列数据进行提交操作。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/118161.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...