当前:命令模式
关于模式的综合运用:
2.《策略模式和职责链模式实现坦克大战》,也用到了命令模式的只不过没有在类图中画
需求:坦克大战
创建两种坦克
坦克类型 | 射程 | 速度 |
b70 | 70米 | 时/70公里 |
b50 | 50米 | 时/70公里 |
类图
类图在这里有,我没在这里画出来,是考虑你分标签阅读更方便
代码
java实现
///* interface *
interface IInvorker{
void execute();
void setCommand(ICommand com);
}
interface ICommand{
void execute();
}
interface IReceiver{
void shot();
void run();
}
///* abstract *
abstract class Command implements ICommand{
IReceiver mReceiver;
public Command(IReceiver r) {
mReceiver = r;
}
}
///* Concrete *
class SortCommand extends Command{
public SortCommand(IReceiver r) {
super(r);
}
public void execute() {
mReceiver.shot();
}
}
class RunCommand extends Command{
public RunCommand(IReceiver r) {
super(r);
}
public void execute() {
mReceiver.run();;
}
}
class Invorker implements IInvorker{
ICommand mCommand;
public void execute() {
mCommand.execute();
}
public void setCommand(ICommand com) {
mCommand = com;
}
}
class Receiver implements IReceiver{
public void shot() {
System.out.println("导弹发射70公里 !");
}
public void run() {
System.out.println("运行速度50公里/小时 !");
}
}
///* Client *
public class Client {
public static void main(String[] args) {
System.out.println("hello worldff !");
IReceiver r = new Receiver();
ICommand sortCommand = new SortCommand(r);
ICommand runCommand = new RunCommand(r);
IInvorker invorker = new Invorker();
invorker.setCommand(sortCommand);
invorker.execute();
invorker.setCommand(runCommand);
invorker.execute();
}
}
运行结果