①UML设计:
②定义:把命令看做一个对象,这样就能让命令拥有对象所有拥有的优势
③示例:
/**
* 创建一个命令执行者
*/
public interface CommandExecutor{
void action();
}
/**
* 创建具体的命令执行者
*/
public class AttackExecutor implements CommandExecutor{
@Override
public void action(){
System.out.println("attack...");
}
}
/**
* 创建命令接收者
*/
public interface Command{
void execute();
}
/**
* 创建具体命令接收者-蹲下
*/
public class SquatCommand implements Command{
//拥有命令执行者的对象
private CommandExecutor executor;
public Squat(CommandExecutor executor){
this.executor = executor;
}
public void execute(){
System.out.println("squat...");
executor.action();
}
}
/**
* 创建具体命令接收者-移动
*/
public class MoveCommand implements Command{
//拥有命令执行者的对象
private CommandExecutor executor;
public Squat(CommandExecutor executor){
this.executor = executor;
}
public void execute(){
System.out.println("move...");
executor.action();
}
}
/**
* 创建命令指挥官
*/
public class CommandInvoker{
Command command;
public CommandInvoker(Command command){
this.command = command;
}
public void action(){
command.execute();
}
}
public class Client{
public static void main(String args[]){
CommandExecutor executor = new AttackExecutor();
Command command = new SquatCommand(executor);
CommandInvoker invoker = new CommandInvoker(command);
invoker.action();
}
}