Head First 設計模式中的命令模式 的一個錯誤


最近在看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();
		}
	}
}

 

你看出這段代碼的問題了嗎?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM