命令模式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1:命令模式
一、实验目的
本实验要求学生掌握命令模式,要求学生理解命令模式中的四种角色并完成类的定义及测试。
二、实验任务
1.在军队作战中,指挥官请求三连偷袭敌人,但是指挥官不希望或无法直接与三连取得联系。使用命令模式分析有哪些类以及这些类的角色,完成这些类的定义并进行测试。
接收者:Receiver类
命令接口:Command类
具体命令:ConcreteCommand类
请求者: Invoker类
import ng.*;
class Receiver{
p ublic void sneakAttack(){
System.out.println("I konw");
}
}
interface Command{
p ublic abstract void execute();
}
class ConcreteCommand implements Command{
R eceiver army;
C oncreteCommand(Receiver army){
this.army = army;
}
p ublic void execute(){
army.sneakAttack();
}
}
class Invoker{
C ommand command;
p ublic void setCommand(Command command){
mand = command;
}
p ublic void startExecuteCommand(){
command.execute();
}
}
public class Main {
p ublic static void main(String [] args){
Receiver thirdArmy = new Receiver();
Command command = new ConcreteCommand(thirdArmy);
Invoker superior = new Invoker();
superior.setCommand(command);
superior.startExecuteCommand();
}
}
2.茱丽(Julia)不需要知道播音(play)、倒带(rewind)和停止(stop)功能是怎么具体执行的,这些命令执行的细节全都由键盘(Keypad)具体实施。茱丽(Julia)只需要在键盘上按下相应的键便可以了。使用命令模式分析有哪些类以及这些类的角色,完成这些类的定义并进行测试。
接收者:Play类Stop类Rewind类
命令接口:KeypadCommand类
具体命令:StopKeypadCommand类PlayKeypadCommand类RewindKeypadCommand类请求者:Julia类
import ng.*;
class Play{
p ublic void play(){
System.out.println("This is Play");
}
}
class Rewind{
p ublic void rewind(){
System.out.println("This is Rewind");
}
}
class Stop{
p ublic void stop(){
System.out.println("This is Stop");
}
}
interface KeypadCommand{
p ublic abstract void execute();
}
class PlayKeypadCommand implements KeypadCommand{
P lay play;
P layKeypadCommand(Play play){
this.play = play;
}
p ublic void execute(){
play.play();
}
}
class RewindKeypadCommand implements KeypadCommand{ R ewind rewind;
R ewindKeypadCommand(Rewind rewind){
this.rewind = rewind;
}
p ublic void execute(){
rewind.rewind();
}
}
class StopKeypadCommand implements KeypadCommand{
S top stop;
S topKeypadCommand(Stop stop){
this.stop = stop;
}
p ublic void execute(){
stop.stop();
}
}
class Julia{
K eypadCommand command;
p ublic void setCommand(KeypadCommand command){