命令模式

##1.接收者
CompanyArmy

1
2
3
4
5
public class CompanyArmy{
public void sneakAttack(){
System.out.printnln("我们知道如何偷袭敌人,保证完成任务");
}
}

##2.命令接口
Command

1
2
3
public interface Command{
public abstract void ececute();
}

##3具体命令
ConcreteCommand

1
2
3
4
5
6
7
8
9
10
11
public class ConcreteCommand implements Command{
CompanyArmy army;//含有接收者的引用
ConcreteCommand(CompanyArmy army){
this.army=army;

}
public void execute(){//封装这指挥官的请求
army.sneakAttack();//偷袭敌人
}

}

##4.请求者
ArmySuperior

1
2
3
4
5
6
7
8
9
10
public class ArmySuperior{
Command command;//用来存放具体命令的引用
public void setCommand(Command command){
this.command=command;

}
public void startExecuteCommand(){//让具体命令执行execute()方法
command.execute();
}
}

##5.模式的使用
Application

1
2
3
4
5
6
7
8
9
public class Application{
public staic void main(String args[]){
CompanyArmy 三连=new CompanyArmy();//创建接收者
Command command=new ConcreteCommand(三连);//创建具体命令并指定接收者
ArmySuperior 指挥官=new ArmySuperior();//创建请求者
指挥官.setCommand(command);
指挥官.startExecuteCommand();
}
}