简介:是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
关键代码:命令的发布者(调用者)一般持有命令接口的引用;具体的命令类持有命令的执行者(被调用者)对象。
一个非常简单的例子:领导发布命令,员工去执行。领导是命令的发布者,持有命令接口的引用。员工是命令的执行者,被一个具体的命令类持有。
代码如下:
/**
*定义一个命令的接口
*/
public interface Command {
public void execute();
}
/**
*命令的发布者,持有命令的引用
*/
class Leader{
private Command command;
public Leader(Command command) {
super();
this.command = command;
}
public void releaseComm(){
command.execute();
}
}
/**
*命令的执行者
*/
class Employee{
public void work(){
System.out.println("执行放假的命令");
}
}
/**
*具体的命令类持有命令执行者对象
*/
class JobCommand implements Command{
private Employee employee;
public JobCommand(Employee employee) {
super();
this.employee = employee;
}
@Override
public void execute() {
employee.work();
}
}
主程序:
public class Main {
public static void main(String[] args) {
Employee employee=new Employee();
JobCommand jobCommand=new JobCommand(employee);
Leader leader=new Leader(jobCommand);
/*leader持有命令,执行此方法时,调用了JobCommand的execute()方法。JobCommand持有命令的执行者,执行
execute()方法,调用了Employee的work()方法。因此leader.releaseComm()最终通过command调用了
Employee的work()方法。*/
leader.releaseComm();
}
}
运行结果:
执行放假的命令