命令模式实现连队进攻撤退
ArmySuperior.java:
/*
* 请求者
*/
public class ArmySuperior {
Command command;
public void setCommand(Command command)
{
this.command=command;
}
public void startExecute()
{
command.execute();
}
}
Command.java:
/*
* 命令接口
*/
public interface Command {
public void execute();
}
CompanyArmy.java:
/*
* 接受者
*/
public class CompanyArmy {
public void sneakAttack()
{
System.out.println("三连进攻");
}
}
CompanyArmySi.java:
public class CompanyArmySi {
public void back()
{
System.out.println("四连撤退");
}
CompanyArmywu.java:
public class CompanyArmywu {
public void relax()
{
System.out.println("五连修整");
}
}
ConcreteCommadwu.java:
public class ConcreteCommadwu implements Command {
CompanyArmywu army;
ConcreteCommadwu(CompanyArmywu army)
{
this.army=army;
}
public void execute()
{
army.relax();
}
}
ConcreteCommand.java:
public class ConcreteCommand implements Command{
CompanyArmy army;
ConcreteCommand(CompanyArmy army)
{
this.army=army;
}
public void execute()
{
army.sneakAttack();
}
}
ConcreteCommandsi.java:
public class ConcreteCommandsi implements Command {
CompanyArmySi army;
ConcreteCommandsi(CompanyArmySi army)
{
this.army=army;
}
public void execute()
{
army.back();
}
}
Application.java:
public class Application {
public static void main(String[] args)
{
CompanyArmy sanlian=new CompanyArmy();
Command san_attack=new ConcreteCommand(sanlian);
ArmySuperior lianzhang=new ArmySuperior();
lianzhang.setCommand(san_attack);
lianzhang.startExecute();
CompanyArmySi silian=new CompanyArmySi();
Command si_back=new ConcreteCommandsi(silian);
lianzhang.setCommand(si_back);
lianzhang.startExecute();
CompanyArmywu wulian=new CompanyArmywu();
Command wu_relax=new ConcreteCommadwu(wulian);
lianzhang.setCommand(wu_relax);
lianzhang.startExecute();
}
}