最近在看Head First 设计模式,其中命令模式中有讲到实现撤销功能,并且作者还出了一道题,
下面的是书中习题:
public class MarcoCommand implements Command{Command[] commands;public MarcoCommand(Command[] commands)
{this.commands = commands;
}public void execute(){for (int i = 0; i < commands.Length; i++){commands[i].execute();}}public void undo(){//请实现撤销功能。
}}
在看到这里的时候,其实脑子里已经完成了答案了,可是最后看到书后面的答案的时候,却感觉有点奇怪,仔细想想还有点意思.
书中的答案如下:
public class MarcoCommand implements Command{Command[] commands;public MarcoCommand(Command[] commands)
{this.commands = commands;
}public void execute(){for (int i = 0; i < commands.Length; i++){commands[i].execute();}}public void undo(){for (int i = 0; i < commands.Length; i++){commands[i].undo();}}}
你看出这段代码的问题了吗?