命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
应用实例:struts 1 中的 action 核心控制器 ActionServlet 只有一个,相当于 Invoker,而模型层的类会随着不同的应用有不同的模型类,相当于具体的 Command。
命令类
/*** @author meikb* @desc* @date 2020-05-23 17:38*/public abstract class Commond {public abstract void execute();}
创建命令
public class CreateCommond extends Commond{private Receiver receiver;public CreateCommond(Receiver receiver){this.receiver = receiver;}@Overridepublic void execute() {this.receiver.user1();}}
查看命令
public class ViewCommond extends Commond{private Receiver receiver;public ViewCommond(Receiver receiver){this.receiver = receiver;}@Overridepublic void execute() {this.receiver.user2();}}
具体调用者
public class Receiver {public void user1(){System.out.println("use1");}public void user2(){System.out.println("use2");}}
命令持有者
public class Invoker {private Commond commond;public Invoker(Commond commond){this.commond = commond;}public void call(){commond.execute();}}
主函数
public class CommondMain {public static void main(String[] args) {Receiver receiver = new Receiver();Commond createCommond = new CreateCommond(receiver);Commond viewCommond = new ViewCommond(receiver);Invoker invoker1 = new Invoker(createCommond);Invoker invoker2 = new Invoker(viewCommond);invoker1.call();invoker2.call();}}
