定义
将一个请求封装为一个对象,实现请求者与实施者的低耦合。
案例
大部分应用都存在很多的菜单和一些操作按钮,但在设计这些菜单和按钮的时候,并不知道它要执行什么样的操作。在设计删除、复制和撤销这些具体实现的时候,也不知道在要什么地方用到,可能是代码里面直接调用,也可能是界面上点击了某个按钮后发生的操作。为了解决菜单和具体操作的这种耦合度,就需要使用Command-命令模式:
菜单类的每一个Item都保存一个Command子类的对象实例,当界面点击的时候,就调用Command的execute()方法,在Command子类的execute()方法里面会直接调用Receiver的action()方法,就执行具体的操作。
class MenuItem {
public:
void setCommand(Command* comand) { m_command = command; }
void onClicked() {
m_command->execute();
}
private: