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();
		}
	}
}





本文转自LoveJenny博客园博客,原文链接:http://www.cnblogs.com/LoveJenny/archive/2012/11/19/2778037.html,如需转载请自行联系原作者
目录
相关文章
|
设计模式 消息中间件 Java
【设计模式】【行为型模式】命令模式(Command)
一、入门 什么是命令模式? 命令模式是一种行为设计模式,它将请求或操作封装为对象,从而使你可以用不同的请求对客户进行参数化,并支持请求的排队、记录、撤销等操作。 命令模式的核心是将“请求”封装为独立的
376 15
|
设计模式 存储 算法
「全网最细 + 实战源码案例」设计模式——命令模式
命令模式(Command Pattern)是一种行为型设计模式,将请求封装成独立对象,从而解耦请求方与接收方。其核心结构包括:Command(命令接口)、ConcreteCommand(具体命令)、Receiver(接收者)和Invoker(调用者)。通过这种方式,命令的执行、撤销、排队等操作更易扩展和灵活。 适用场景: 1. 参数化对象以操作。 2. 操作放入队列或远程执行。 3. 实现回滚功能。 4. 解耦调用者与接收者。 优点: - 遵循单一职责和开闭原则。 - 支持命令组合和延迟执行。 - 可实现撤销、恢复功能。 缺点: - 增加复杂性和类数量。
561 14
「全网最细 + 实战源码案例」设计模式——命令模式
|
设计模式 存储 算法
Java设计模式-命令模式(16)
Java设计模式-命令模式(16)
313 2
|
设计模式 存储 Java
【十二】设计模式~~~行为型模式~~~命令模式(Java)
文章详细介绍了命令模式(Command Pattern),这是一种对象行为型模式,用于将请求封装成对象,实现请求发送者与接收者的解耦,从而降低系统耦合度、提高灵活性,并支持命令的排队、记录、撤销和恢复操作。通过案例分析、结构图、时序图和代码示例,文章展示了命令模式的组成部分、实现方式和应用场景,并讨论了其优点、缺点和适用情况。
|
设计模式 JavaScript API
js设计模式【详解】—— 命令模式
js设计模式【详解】—— 命令模式
280 6
|
设计模式 Java
Head First设计模式学习笔记
Head First设计模式学习笔记
|
设计模式
命令模式-大话设计模式
命令模式-大话设计模式
184 2
|
设计模式 Java uml
必知的技术知识:JAVA【设计模式】命令模式
必知的技术知识:JAVA【设计模式】命令模式
196 0
|
设计模式 Java
Java设计模式之命令模式详解
Java设计模式之命令模式详解
|
设计模式
设计模式之命令模式
设计模式之命令模式