java设计模式——命令模式

来源:互联网 发布:tensorflow下word2vec 编辑:程序博客网 时间:2024/04/27 13:52

《大话设计模式》第二十三章

package ch23;public class Receiver {public void action() {System.out.println("执行请求");}}


 

package ch23;public abstract class Command {protected Receiver receiver;public Command(Receiver receiver) {this.receiver = receiver;}public abstract void execute();}


 

package ch23;public class ConcreteCommandA extends Command {public ConcreteCommandA(Receiver receiver) {super(receiver);}@Overridepublic void execute() {receiver.action();}}


 

package ch23;public class ConcreteCommandB extends Command {public ConcreteCommandB(Receiver receiver) {super(receiver);}@Overridepublic void execute() {receiver.action();}}


 

package ch23;public class ConcreteCommandC extends Command {public ConcreteCommandC(Receiver receiver) {super(receiver);}@Overridepublic void execute() {receiver.action();}}


 

package ch23;public class Invoker {private Command command;public void setCommand(Command command) {this.command = command;}public void executeCommand() {command.execute();}}


 

package ch23;import java.util.ArrayList;import java.util.List;/** * 命令模式 * @author Administrator * */public class Client {/** * @param args */public static void main(String[] args) {Receiver r = new Receiver();Command ca = new ConcreteCommandA(r);Command cb = new ConcreteCommandB(r);Command cc = new ConcreteCommandC(r);List<Command> commandList = new ArrayList<Command>();commandList.add(ca);commandList.add(cb);commandList.add(cc);Invoker in = new Invoker();for (int i = 0; i < commandList.size(); i++) {in.setCommand(commandList.get(i));in.executeCommand();}}}


命令模式在struts里用的很多,一个action就是一个command。

原创粉丝点击