命令模式的主要用途是中小型项目的撤销重做功能。它由四个部分组成:
1.command基类,定义execute()方法、undo()方法的纯虚函数接口;
2.receiver类,也就是命令接收者,或者说真正的数据核心。它可以定义多个函数,而这些函数就是每个命令子类的操作对象,通常一个命令子类会接管一组相关的函数,例如加减、乘除,以便对应execute()和undo()函数;
3.concretecommand类,也就是命令子类。它有三个特性,首先以receiver作为成员变量或者普通变量;第二重写基类的虚函数,并且这些虚函数都以receiver类的一组相关函数作为操作对象;第三它需要记录函数执行前的状态,例如执行加法后,要保存执行前的数据,以便执行undo的时候能够回撤;
4.invoker类,也就是管理类,这个类会有一个撤销栈和一个重做栈。它也包含execute()方法、undo()方法,这两个方法都是以command作为参数,执行他们的execute()方法、undo()方法,同时往栈内压如command,作为历史记录。通常还可以有一个redo()方法,用于反撤销。

被折叠的 条评论
为什么被折叠?



