命令模式(Command) Java
2016-06-08
package ding.study.designpatterns.command; /** * 具体执行类 * * @author daniel * */ public class Receiver { public void action() { System.out.println("执行请求"); } }
package ding.study.designpatterns.command; /** * 命令类抽象 * * @author daniel * */ abstract class Command { // 执行类属性 protected Receiver receiver; public Command(Receiver receiver) { this.receiver = receiver; } // 调用执行类的执行方法 abstract public void execute(); }
package ding.study.designpatterns.command; /** * 具体命令实现类 * @author daniel * @email 576699909@qq.com * @time 2016-6-8 上午11:11:32 */ public class CommandImpl extends Command { /** * 调用父类构造方法 * * @param receiver */ public CommandImpl(Receiver receiver) { super(receiver); } /** * 执行具体方法 */ @Override public void execute() { receiver.action(); } }
package ding.study.designpatterns.command; /** * 命令发起者 * @author daniel * @email 576699909@qq.com * @time 2016-6-8 上午11:12:33 */ public class Invoker { private Command command; /** * @param command * the command to set */ public void setCommand(Command command) { this.command = command; } /** * 调用命令类执行方法 */ public void executeCommand() { command.execute(); } }
package ding.study.designpatterns.command; /** * 命令模式(Command): 将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。 * @author daniel * @email 576699909@qq.com * @time 2016-6-8 上午11:13:46 */ public class Zmain { /** * * //执行具体命令 调用类>命令类>命令实现类>执行类 * @author daniel * @time 2016-6-8 上午11:12:52 * @param args */ public static void main(String[] args) { // 执行类 Receiver r = new Receiver(); // 命令实现类 装载具体执行类 Command c = new CommandImpl(r); // 调用命令类 Invoker i = new Invoker(); // 装载命令类 i.setCommand(c); // 执行具体命令 调用类>命令类>命令实现类>执行类 i.executeCommand(); } }
执行具体命令 调用类>命令类>命令实现类>执行类执行请求
https://github.com/dingsai88/StudyTest/tree/master/src/ding/study/designpatterns/command