最近在看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();}}}
你看出這段代碼的問題了嗎?