1.提出问题
什么是命令模式,顾名思义,一定会有命令的发送者和接受者。发送者负责发送命令,接受者负责接受并处理命令。例如,老板通知员工送货,老板就是命令的发送者,员工是命令的接受者。员工接受到命令,还得完成送货这个任务。生活总命令模式很常见。
2.简单命令模式
命令模式主要是对发出的命令任务进行封装和抽象。首先有个抽象的命令接口,描述任务的特征。具体的实现是由命令对象完成。
就老板通知员工送货的场景描述,具体的实现代码如下:
package ml_model;
//抽象命令接口
public interface ICommand {
public void sendGood();//送货
}
package ml_model;
//命令的接受者 具体的工作一定是在接受者中完成
public class Staff {
public void sendGooding(){//"送货"的任务通过该方法完成
System.out.println("正在路上送货。。");
}
}
package ml_model;
//命令的发送者
//发送者类中 包含 接受者的引用
public class Boss implements ICommand{
private Staff reciver=null;
public Boss(Staff staff){
this.reciver=staff;
}
@Override
//任务具体的实现由接受者完成
public void sendGood() {
reciver.sendGooding();
}
}
package ml_model;
//命令请求者类 是一个中间类
//命令发送者与请求者作用 请求者类与命令接受者类作用
//主要用来解决 多个发送者和多个接受者 的问题
public class Invoke {
ICommand iCommand;
public Invoke(ICommand iCommand){
this.iCommand=iCommand;
}
//启动命令
public void execute(){
iCommand.sendGood();
}
}
测试类:
package ml_model;
public class Test {
public static void main(String[] args) {
Staff staff=new Staff();
Boss boss=new Boss(staff);
// boss.sendGood();
Invoke invoke=new Invoke(boss);
invoke.execute();
}
}