1.取消操作
* 每一个操作类都包含有undo这个逆操作方法,注意(undo好像是个保留字);
* 这个UndoDecorator的作用是执行一个命令前先将其压栈;
* 在执行取消操作时,从命令栈中弹出最近的命令并调用其undo方法,进行还原。
2.不可逆操作的取消
不可逆操作:从点A画线到点B的取消操作不是其逆操作:从点B画线到点A
这种情况下,唯一办法就是清除状态,弹出最后一步操作的命令,然后把栈中的命令重新执行一次。
* 最大的改变是executeCommands中把栈里的命令执行一次;
* undo方法pop最后一条命令;