定义: 命令模式将‘请求’封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象,命令模式也支持可撤销的操作。
类图
如上图所示: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; } @Override public 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(); } }
时间: 2024-11-13 06:49:36