一.命令模式定义
1.Receive接收者角色
该角色就是干活的角色,命令传递到这里时应该被执行的
2.Command命令角色
需要执行的所以命令都在这里声明
3.Invoker调用者角色
接受到命令,并执行命令。
二.示例
1.抽象接收者角色
/*** 定义接收者*/
public abstract class Receiver {/*** 抽象接收者,定义每个接受者都必须要完成的业务*/public abstract void dosomething();
}
2.具体的接收者实现
接收者可以有多个,根据业务依赖定义。
public class ConcreteReceiver1 extends Receiver {@Overridepublic void dosomething() {//TODO 接收者处理一定的业务}
}
public class ConcreteReceiver2 extends Receiver {@Overridepublic void dosomething() {//TODO 接收者处理一定的业务}
}
3.抽象Command类
public abstract class Command {/*** 每个命令类都必须有一个执行命令的方法*/public abstract void execute();
}
4.具体的Command类
public class ConcreteCommand1 extends Command {//那个receiver类要执行命令private Receiver receiver;public ConcreteCommand1(Receiver receiver) {this.receiver = receiver;}@Overridepublic void execute() {//业务处理this.receiver.dosomething();}
}public class ConcreteCommand2 extends Command {//那个receiver类要执行命令private Receiver receiver;public ConcreteCommand1(Receiver receiver) {this.receiver = receiver;}@Overridepublic void execute() {//业务处理this.receiver.dosomething();}
}
5.调用者Invoker类
public class Invoker {private Command command;/*** 接收命令* @param command*/public void setCommand(Command command) {this.command = command;}/*** 执行命令*/public void action() {this.command.execute();}}
6.高层模块应用
public class Client {public static void main(String[] args) {Invoker invoker = new Invoker();//定义接收者Receiver receiver = new ConcreteReceiver1();//定义一个命令给接收者Command command = new ConcreteCommand1(receiver);//把命令交给调用者执行invoker.setCommand(command);invoker.action();}
}
三.应用场景
大致的应用场景