《JAVA与模式》第21天―命令模式 (二)

2014-11-24 08:31:55 · 作者: · 浏览: 7
47
* @创建时间:2012-7-2 上午11:41:21
*
* @类说明 :接收者角色类
*/
public class Receiver {
/**
* 真正执行命令相应的操作
*/
public void action() {
System.out.println("执行操作");
}
}
package com.bankht.Command;

/**
* @author: 特种兵—AK47
* @创建时间:2012-7-2 上午11:41:21
*
* @类说明 :接收者角色类
*/
public class Receiver {
/**
* 真正执行命令相应的操作
*/
public void action() {
System.out.println("执行操作");
}
}

AudioPlayer系统
  小女孩茱丽(Julia)有一个盒式录音机,此录音机有播音(Play)、倒带(Rewind)和停止(Stop)功能,录音机的键盘便是请求者(Invoker)角色;茱丽(Julia)是客户端角色,而录音机便是接收者角色。Command类扮演抽象命令角色,而PlayCommand、StopCommand和RewindCommand便是具体命令类。茱丽(Julia)不需要知道播音(play)、倒带(rewind)和停止(stop)功能是怎么具体执行的,这些命令执行的细节全都由键盘(Keypad)具体实施。茱丽(Julia)只需要在键盘上按下相应的键便可以了。

  录音机是典型的命令模式。录音机按键把客户端与录音机的操作细节分割开来。

\

  源代码
  接收者角色,由录音机类扮演

[java]
package com.bankht.Command.recorder;

/**
* @author: 特种兵—AK47
* @创建时间:2012-7-2 下午02:30:19
*
* @类说明 :接收者角色,由录音机类扮演
*/
public class AudioPlayer {

public void play() {
System.out.println("播放...");
}

public void rewind() {
System.out.println("倒带...");
}

public void stop() {
System.out.println("停止...");
}
}
package com.bankht.Command.recorder;

/**
* @author: 特种兵—AK47
* @创建时间:2012-7-2 下午02:30:19
*
* @类说明 :接收者角色,由录音机类扮演
*/
public class AudioPlayer {

public void play() {
System.out.println("播放...");
}

public void rewind() {
System.out.println("倒带...");
}

public void stop() {
System.out.println("停止...");
}
}

  抽象命令角色类

[java]
package com.bankht.Command.recorder;

/**
* @author: 特种兵—AK47
* @创建时间:2012-7-2 下午02:30:44
*
* @类说明 :抽象命令角色类
*/
public interface Command {
/**
* 执行方法
*/
public void execute();
}
package com.bankht.Command.recorder;

/**
* @author: 特种兵—AK47
* @创建时间:2012-7-2 下午02:30:44
*
* @类说明 :抽象命令角色类
*/
public interface Command {
/**
* 执行方法
*/
public void execute();
}

 具体命令角色类

[java]
package com.bankht.Command.recorder;

/**
* @author: 特种兵—AK47
* @创建时间:2012-7-2 下午02:31:27
*
* @类说明 :具体命令角色类-播音
*/
public class PlayCommand implements Command {

private AudioPlayer myAudio;

public PlayCommand(AudioPlayer audioPlayer) {
myAudio = audioPlayer;
}

/**
* 执行方法
*/
@Override
public void execute() {
myAudio.play();
}

}
package com.bankht.Command.recorder;

/**
* @author: 特种兵—AK47
* @创建时间:2012-7-2 下午02:31:27
*
* @类说明 :具体命令角色类-播音
*/
public class PlayCommand implements Command {

private AudioPlayer myAudio;

public PlayCommand(AudioPlayer audioPlayer) {
myAudio = audioPlayer;
}

/**
* 执行方法
*/
@Override
public void execute() {
myAudio.play();
}

}

[java]
package com.bankht.Command.recorder;

/**
* @author: 特种兵—AK47
* @创建时间:2012-7-2 下午02:32:40
*
* @类说明 :具体命令角色类-倒带
*/
public class RewindCommand implements Command {

private AudioPlayer myAudio;

public RewindCommand(AudioPlayer audioPlayer) {
myAudio = audioPlayer;
}

@Override
public void execute() {
myAudio.rewind();
}

}
package com.bankht.Command.recorder;

/**
* @author: 特种兵—AK47
* @创建时间:2012-7-2 下午02:32:40
*
* @类说明 :具体命令角色类-倒带
*/
public class RewindCommand implements Command {

private AudioPlayer myAudio;

public RewindCommand(AudioPlayer audioPlayer) {
myAudio = audioPlayer;
}

@Override
public void execute() {
myAudio.rewind();
}

}