标签:
/**
* 命令接口。
* 所有的命令对象需要实现该接口。
* */
public interface Commond {
public void execute();
}
|
/**
* 录音机--命令接受者
* */
public class AudioPlayer {
public void play() {
System.out.println("播放......");
}
public void stop() {
System.out.println("暂停......");
}
public void rewind() {
System.out.println("倒带......");
}
}
|
/**
* 录音机播放命令
* 具体命令角色类
* */
public class PlayCommond implements Commond{
AudioPlayer player;
public PlayCommond(AudioPlayer player) {
this.player = player;
}
// 调用接收对象(录音机)的 play() 方法
public void execute() {
player.play();
}
}
|
/**
* 录音机倒带命令
* 具体命令角色类
* */
public class RewindCommond implements Commond{
AudioPlayer player;
public RewindCommond(AudioPlayer player) {
this.player = player;
}
// 调用接收对象(录音机)的 rewind() 方法
public void execute() {
player.rewind();
}
}
|
/**
* 录音机暂停命令
* 具体命令角色类
* */
public class StopCommond implements Commond{
AudioPlayer player;
public StopCommond(AudioPlayer player) {
this.player = player;
}
// 调用接收对象(录音机)的 stop() 方法
public void execute() {
player.stop();
}
}
|
/**
* 键盘类
* 请求者角色
* */
public class Keypad {
private Commond play;
private Commond stop;
private Commond rewind;
public void setPlayCommond(Commond play) {
this.play = play;
}
public void setStopCommond(Commond stop) {
this.stop = stop;
}
public void setRewindCommond(Commond rewind) {
this.rewind = rewind;
}
// 执行播放方法
public void play() {
play.execute();
}
// 执行暂停方法
public void stop() {
stop.execute();
}
// 执行倒带方法
public void rewind() {
rewind.execute();
}
}
|
/**
* 具体人--莱斯利
* 客户端角色
* */
public class Leslie {
public static void main(String[] args) {
// 创建接受者对象,即收音机对象
AudioPlayer player = new AudioPlayer();
// 创建命令者对象
Commond play = new PlayCommond(player);
Commond stop = new StopCommond(player);
Commond rewind = new RewindCommond(player);
// 创建请求者对象,即键盘对象
Keypad keypad = new Keypad();
keypad.setPlayCommond(play);
keypad.setStopCommond(stop);
keypad.setRewindCommond(rewind);
// 播放
keypad.play();
// 暂停
keypad.stop();
// 倒带
keypad.rewind();
}
}
|
/**
* 定义宏命令接口
* */
public interface MacroCommand extends Command{
/**
* 宏命令存储的管理方法
* 可以添加一个成员命令
*/
public void add(Command cmd);
/**
* 宏命令存储的管理方法
* 可以删除一个成员命令
*/
public void remove(Command cmd);
}
|
/**
* 具体的宏命令,对存储的若干命令进行操作
* */
public class MacroAudioCommand implements MacroCommand{
// 宏命令集合
private List<Command> cmdList = new ArrayList<Command>();
// 一次性执行宏命令集合中的各命令
public void execute() {
System.out.println("-------自动回放保存的命令-------");
for(Command cmd : cmdList) {
cmd.execute();
}
System.out.println("------------回放完毕------------");
}
public void add(Command cmd) {
cmdList.add(cmd);
}
public void remove(Command cmd) {
cmdList.remove(cmd);
}
}
|
/**
* 具体人--莱斯利
* 客户端角色
* */
public class Leslie {
public static void main(String[] args) {
// 创建接受者对象,即收音机对象
AudioPlayer player = new AudioPlayer();
// 创建命令者对象
Command play = new PlayCommond(player);
Command stop = new StopCommond(player);
Command rewind = new RewindCommond(player);
MacroCommand macro = new MacroAudioCommand();
macro.add(play);
macro.add(rewind);
macro.add(stop);
macro.execute();
}
}
|
标签:
原文地址:http://www.cnblogs.com/LeslieXia/p/5494889.html