Command命令模式是将发出命令的责任和接受命令的责任以及命令三者之间分开,通过分离后委派给不同的对象方便扩展。主要涉及到的对象有:请求者,命令,接收者。
如:长官命令士兵跑步、唱歌。
长官是命令发出者(Offiecer)
士兵是命令接收者(Soldier)
跑步,唱歌是具体命令(Command)
package com.wayne.command;
public abstract class Command {
public abstract void execute();
}
package com.wayne.command;
public class SingCommand extends Command {
private Soldier soldier;
public SingCommand(Soldier soldier) {
this.soldier = soldier;
}
@Override
public void execute() {
soldier.action();
}
}
package com.wayne.command;
public class RunCommand extends Command {
private Soldier soldier ;
public RunCommand(Soldier soldier){
this.soldier = soldier;
}
@Override
public void execute() {
soldier.action();
}
}
package com.wayne.command;
public class Officer {
private Command command;
public Officer(Command command) {
this.command = command;
}
public void order() {
command.execute();
}
}
package com.wayne.command;
public class Soldier {
public Soldier() {
}
public void action() {
System.out.println("execute command.....");
}
}
package com.wayne.command;
public class Client {
public static void main(String args[]) {
Soldier soldier = new Soldier();
Command command = new RunCommand(soldier);
Command command2 = new SingCommand(soldier);
// 不同的长官给同一个士兵发送不同的命令
Officer officer = new Officer(command);
Officer officer2 = new Officer(command2);
officer.order();
officer2.order();
}
}