定义: 命令模式将‘请求’封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象,命令模式也支持可撤销的操作。
类图
如上图所示:Command类是用来声明执行操作的接口;ConcreteCommand类,将一个接收者对象绑定于一个动作,调用接收者相应的操作,以实现Execute;Receiver类,知道如何实施与执行一个与请求相关的操作,任何类都可能作为一个接收者;Invoker类,要求该命令执行这个命令。
命令模式实现:
/***声明执行者接口*/ public abstract class Command {public abstract void excute();//public abstract void undo(); 撤销命令 }/***执行请求者相关的操作,任何类都可以作为一个接受者*/ public class Receiver {public void action() {System.out.println("执行请求..........");} }/***将一个接收者对象绑定于一个动作,调用接收者相应的操作*/ public class ConcreateCommand extends Command {//绑定一个接受者对象 Receiver receiver;public ConcreateCommand(Receiver receiver) {this.receiver=receiver;}@Overridepublic void excute() {receiver.action();}}/*** 设置命令,执行这个命令**/ public class Invoker {/**设置具体的命令,可以是一组命令,然后执行命令**/Command command;public void setCommand(Command command) {this.command=command;}public void executeCommand() {command.excute();} }public class CommandPatternTest {public static void main(String[] args) {//一个接受者Receiver receiver =new Receiver();Command command =new ConcreateCommand(receiver);Invoker i=new Invoker();//设置命令 i.setCommand(command);//执行命令 i.executeCommand();}}