介绍
如果请求者不希望或无法直接和被请求者打交道,即不希望或无法含有被请求者的引用,那么就可以使用命令模式。
结构
模式的结构中包括四种角色:
接收者(Receiver)
命令(Command)接口
具体命令(ConcreteCommand)
请求者(Invoker)
UML图
具体描述与应用
接收者(Receiver) : CompanyArmy.java
public class CompanyArmy{public void sneakAttack(){
System.out.println("我们知道如何偷袭敌人,保证完成任务");
}
}
命令(Command)接口 : Command.java
public interface Command {
public abstract void execute();
}
具体命令(ConcreteCommand) ConcreteCommand.java
public class ConcreteCommand implements Command{
CompanyArmy army; //含有接收者的引用
ConcreteCommand(CompanyArmy army){
this.army=army;
}
public void execute(){ //封装着指挥官的请求
army.sneakAttack(); //偷袭敌人
}
}
请求者(Invoker) ArmySuperior.java
public class ArmySuperior{
Command command; //用来存放具体命令的引用
public void setCommand(Command command){
this.command=command;
}
public void startExecuteCommand(){
//让具体命令执行execute()方法
command.execute();
}
}
应用 Application.java
public class Application{public static void main(String args[]){
CompanyArmy 三连=new CompanyArmy();
Command command=new ConcreteCommand(三连);
ArmySuperior 指挥官=new ArmySuperior();
指挥官.setCommand(command);
指挥官.startExecuteCommand();
}
}