// 创建命令对象
Command playCommand = new PlayCommand(audioPlayer);
Command rewindCommand = new RewindCommand(audioPlayer);
Command stopCommand = new StopCommand(audioPlayer);
// 创建请求者对象
Keypad keypad = new Keypad();
keypad.setPlayCommand(playCommand);
keypad.setRewindCommand(rewindCommand);
keypad.setStopCommand(stopCommand);
// 测试
keypad.play();
keypad.rewind();
keypad.stop();
keypad.play();
keypad.stop();
}
}
运行结果如下:
[html] view plaincopyprint
播放...
倒带...
停止...
播放...
停止...
播放...
倒带...
停止...
播放...
停止...
宏命令
所谓宏命令简单点说就是包含多个命令的命令,是一个命令的组合。
设想茱丽的录音机有一个记录功能,可以把一个一个的命令记录下来,再在任何需要的时候重新把这些记录下来的命令一次性执行,这就是所谓的宏命令集功能。因此,茱丽的录音机系统现在有四个键,分别为播音、倒带、停止和宏命令功能。此时系统的设计与前面的设计相比有所增强,主要体现在Julia类现在有了一个新方法,用以操作宏命令键。

源代码
系统需要一个代表宏命令的接口,以定义出具体宏命令所需要的接口。
[java]
package com.bankht.Command.recorder;
/**
* @author: 特种兵—AK47
* @创建时间:2012-7-2 下午02:46:04
*
* @类说明 :系统需要一个代表宏命令的接口,以定义出具体宏命令所需要的接口。
*/
public interface MacroCommand extends Command {
/**
* 宏命令聚集的管理方法 可以添加一个成员命令
*/
public void add(Command cmd);
/**
* 宏命令聚集的管理方法 可以删除一个成员命令
*/
public void remove(Command cmd);
}
package com.bankht.Command.recorder;
/**
* @author: 特种兵—AK47
* @创建时间:2012-7-2 下午02:46:04
*
* @类说明 :系统需要一个代表宏命令的接口,以定义出具体宏命令所需要的接口。
*/
public interface MacroCommand extends Command {
/**
* 宏命令聚集的管理方法 可以添加一个成员命令
*/
public void add(Command cmd);
/**
* 宏命令聚集的管理方法 可以删除一个成员命令
*/
public void remove(Command cmd);
}
具体的宏命令MacroAudioCommand类负责把个别的命令合成宏命令。
[java]
package com.bankht.Command.recorder;
import java.util.ArrayList;
import java.util.List;
/**
* @author: 特种兵—AK47
* @创建时间:2012-7-2 下午02:46:38
*
* @类说明 :具体的宏命令MacroAudioCommand类负责把个别的命令合成宏命令。
*/
public class MacroAudioCommand implements MacroCommand {
private List
/**
* 宏命令聚集管理方法
*/
@Override
public void add(Command cmd) {
commandList.add(cmd);
}
/**
* 宏命令聚集管理方法
*/
@Override
public void remove(Command cmd) {
commandList.remove(cmd);
}
/**
* 执行方法
*/
@Override
public void execute() {
for (Command cmd : commandList) {
cmd.execute();
}
}
}
package com.bankht.Command.recorder;
import java.util.ArrayList;
import java.util.List;
/**
* @author: 特种兵—AK47
* @创建时间:2012-7-2 下午02:46:38
*
* @类说明 :具体的宏命令MacroAudioCommand类负责把个别的命令合成宏命令。
*/
public class MacroAudioCommand implements MacroCommand {
private List
/**
* 宏命令聚集管理方法
*/
@Override
public void add(Command cmd) {
commandList.add(cmd);
}
/**
* 宏命令聚集管理方法
*/
@Override
public void remove(Command cmd) {
commandList.remove(cmd);
}
/**
* 执行方法
*/
@Override
public void execute() {
for (Command cmd : commandList) {
cmd.execute();
}
}
}
客户端类JuliaHong
[java]
package com.bankht.Command.recorder;
/**
* @author: 特种兵—AK47
* @创建时间:2012-7-2 下午02:48:06
*
* @类说明 :客户端类JuliaHong
*/
public class JuliaHong {
public static void main(String[] args) {
// 创建接收者对象
AudioPlayer audioPlayer = new AudioPlayer();
// 创建命令对象
Command playCommand = new PlayCommand(audioPlayer);
Command rewindCommand = new RewindCommand(audioPlayer);
Command stopComma